标签:c
小余最近迷恋上了数论,他认为大素数的判定是非常迷人的,但是他的程序总是数一大就死循环= = ,结果找了一晚上,发现原来是求a*b%c这个环节上出现了错误,聪明的你能帮助可怜的小余求出这个问题吗?
input
测试数组有多组,每行输入三个整数a,b,c(1<=a,b,c<2^64)
output
对于每次输入,对应输出相应的结果即a*b%c的值。每个输出占一行。
sample_input
1 2 3
2 3 4
1 1 1
sample_output
2
2
0
#include <iostream>
using namespace std;
long long mod(long long a,long long b,long long c)
{
long long ans=0;
while(b)
{
if(b&1)
ans=(a+ans)%c;
b/=2;
a=(2*a)%c;
}
return ans;
}
int main()
{
long long a,b,c;
while(cin>>a>>b>>c)
{
long long ans=mod(a,b,c);
cout<<ans<<endl;
}
return 0;
}
标签:c
原文地址:http://blog.csdn.net/qingshui23/article/details/46050167