- 原题链接:Here!
- 思路:
可以利用同余的基本性质 ab ≡ (a%m)(b%m) (mod m) ,也非常好证明。
设 a = k1*m + c1 , b = k2*m + c2 ( k1,k2 为非负整数 )
ab = k1*k2*m*m + m*(k1*c2+k2*c1) + c1*c2
ab mod m = c1*c2
a mod m = c1 , b mod m = c2
因此 ab ≡ (a%m)(b%m) (mod m)
- 代码:
/* Note: 利用了同余的基本性质 ab ≡(a%m)(b%m) (mod m) */ #include<bits/stdc++.h> using namespace std; int solve(int a,int b,int m){ int ans = 1; for(int i=1;i<=b;i++){ ans = ans*a%m; } return ans; } int main(){ int a,b,m; while(cin>>a>>b && a+b){ cout<< solve(a,b,1000) <<endl; } return 0; }