解题思路:分治思想 (a*b)% k = ((a%k)*(b%k)) % k
注意事项:数据类型,确保乘积运算在int范围
参考代码:
#include<iostream> #include<limits> #include<cstring> #include<cmath> using namespace std; long long ob,p; int b,k,res; int dfs(long long n){ if(n == 0) return 1; int res = dfs(n/2) % k; res = (res * res) % k; if(n % 2 == 1) res = ((res % k) * (b % k))%k; return res; } int main() { cin >> ob >> p >> k; b = ob % k; res = dfs(p); printf("%lld^%lld mod %d=%d",ob,p,k,res); return 0; }
0.0分
3 人评分
C语言训练-计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m) (C语言代码)浏览:799 |
最长单词 (C语言代码)浏览:1474 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1015 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1261 |
1642题解浏览:784 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1483 |
A+B for Input-Output Practice (VII) (C语言代码)浏览:566 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:569 |
1051(奇了怪了)浏览:747 |
C二级辅导-统计字符 (C语言代码)浏览:514 |