DSP

64位整数乘法

2019-07-13 17:35发布

0102 64位整数乘法 0x00「基本算法」例题
描述
求 a 乘 b 对 p 取模的值,其中 1≤a,b,p≤10^18。 输入格式
第一行a,第二行b,第三行p。 输出格式
一个整数,表示a*b mod p的值。 样例输入
2
3
9
样例输出
6 a*b mod p=a*b-[a*b/p]*p
[]为向下去整 #include #include #include #include #include using namespace std; int main() { long long a,b,p; scanf("%lld%lld%lld",&a,&b,&p); a%=p;b%=p; long long c=(long double)a*b/p; long long ans=a*b-c*p; if (ans<0) ans+=p; else if (ans>=p) ans-=p; printf("%lld",ans); }