CODEVS 1497 取余运算

xiaoxiao2021-02-27  412

可以用分治递归和循环两种方式,将大数分成二进制进行运算。

//注意long long与int的转换。 #include<bits/stdc++.h> using namespace std; int pow_mod1(int b, int p, int k){ if(!p) return 1; int x = pow_mod1(b, p/2, k); long long ans = (long long) x * x % k; if(p % 2) ans = ans * b % k; return (int) ans; } int pow_mod2(int b, int p, int k){ long long ans = 1; while(p){ if(p & 1) ans = ans * b % k; p = p >> 1; b = b * b % k; } return ans; } int main(){ int b, p, k; cin >> b >> p >> k; cout << pow_mod1(b, p, k) << endl; cout << pow_mod2(b, p, k) << endl; return 0; }
转载请注明原文地址: https://www.6miu.com/read-5067.html

最新回复(0)