解题思路:分治思想 (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语言考试练习题_排列 (C++代码)浏览:628 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:927 |
奖学金 (C++代码)浏览:2005 |
C语言训练-素数问题 (C语言代码)浏览:991 |
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:889 |
【排队买票】 (C语言代码)浏览:899 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:672 |
1908题解浏览:633 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1456 |
杨辉三角 (C语言代码)浏览:484 |