取余运算(mod)
题目描述:
输入三个正整数a,b,c 计算a^b mod c。
输入格式:
第一行输入三个正整数a,b,c。
输出格式:
输出a^b mod c 的值。
样例输入输出:
Mod.in mod.out
2 3 5 3
数据范围:
30%的数据满足:a,c*c 在longint 范围内,b<=10000;
50%的数据满足:a,b,c*c 都在longint 范围内;
100%的数据满足:a,b,c 在longint 范围内。
****用快速幂写的,想要%c结果就显示编译错误。好不容易过了样例。。然后还辣么伤心的给我三十分。后来发现我快速幂写的有问题。
翻了一下以前的课件,发现有关这道题的快速幂应该是这样的
递归代码
int quickPow(int a,int b,int n){
if(b==1) return a;
if(b%2==0){
int t=quickPow(a,b/2,n);
return t*t%n;
}else{
int t=quickPow(a,b/2,n);
t=t*t%n;
t=t*a%n;
return t;
}
}
大概应该是这样的吧。。实在看不懂他们的代码。。诶。。