HDU-2035 人见人爱A^B

M - 人见人爱A^B点击打开链接

求A^B的最后三位数表示的整数。 
说明:A^B的含义是“A的B次方” 
Input输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。Output对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。 
Sample Input
2 3
12 6
6789 10000
0 0
Sample Output
8
984
1
代码如下:

  1. //第一种是快速幂的应用
  2. #include<iostream>
  3. using namespace std;
  4. typedef long long ll;
  5. ll qmod(ll a,ll b,ll c)
  6. {
  7. ll ans=1;
  8. a=a%c;
  9. while(b)
  10. {
  11. if(b&1) ans=(a*ans)%c;
  12. a=(a*a)%c;
  13. b>>=1;
  14. }
  15. return ans;
  16. }
  17. int main()
  18. {
  19. ll a,b,c=1000;
  20. while(cin>>a>>b,a&&b)
  21. {
  22. cout<<qmod(a,b,c)<<endl;
  23. }
  24. return 0;
  25. }
  26. //第二种方法是 公式 (a*b)%c=(a%c)*(b%c)%c 的应用
  27. #include<iostream>
  28. using namespace std;
  29. int main()
  30. {
  31. int a=1,n;
  32. while(cin>>a>>n,a && n)
  33. {
  34. int ans=1;
  35. for(int i=1;i<=n;i++)
  36. {
  37. ans=a*ans%1000;
  38. }
  39. cout<<ans<<endl;
  40. }
  41. return 0;
  42. }

 
阅读更多
上一篇HPU-1212 该死的密码 [字符串]
下一篇HDU-4548 美素数
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭