要求A^B的后三位整数,每次乘积后再对1000取余即可,其中第一种为快速幂。

  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. long long mod_pow(long long x,long long n)
  5. {
  6. if(n==0) return 1;
  7. long long res=mod_pow(x,n/2);
  8. res=res*res%1000;
  9. if(n%2==1) res=res*x%1000;
  10. return res;
  11. }
  12. int main()
  13. {
  14. long long a,b;
  15. long long res;
  16. while(cin>>a>>b)
  17. {
  18. if(a==0 && b==0) break;
  19. res=mod_pow(a,b);
  20. cout<<res<<endl;
  21. }
  22. return 0;
  23. }
  24. //int main()
  25. //{
  26. // int a,b,i,ans;
  27. // while(cin>>a>>b)
  28. // {
  29. // ans=1;
  30. // if(a==0&&b==0) break;
  31. // for(i=1;i<=b;i++)
  32. // {
  33. // ans=ans*a%1000;
  34. // }
  35. // cout<<ans<<endl;
  36. // }
  37. // return 0;
  38. //}