hdu2035 人见人爱A^B题解

思路一:这个题可以直接暴力做:

 1 #include<iostream>
 2 #include<cstdio>
 3 int main()
 4 {
 5     int a,b;
 6     while(scanf("%d%d",&a,&b),a,b)
 7     {
 8         int c=1;
 9         for(int i=1;i<=b;i++)
10         {
11             c=(c*a)%1000;
12         }
13         printf("%d\n",c);
14     }
15     return 0;
16 }

多少次方需要乘几次a直接上循环,边乘边模1000。

思路二:抱着学习快速幂的心理,用快速幂的思路做了一下。

快速幂的详细解法看这个:快速幂

快速幂的解法代码如下:

(本题比较特殊,需用int型定义才能AC,否则和答案不一样)

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int FastPower(int a,int b)
 5 {
 6     int ans=1;
 7     while(b!=0)
 8     {
 9         if(b%2)
10         {
11             ans=ans*a%1000;
12         }
13         a=a*a%1000;
14         b/=2;
15     }
16     return ans;
17 }
18 int main()
19 {
20     int a,b;
21     while(scanf("%d%d",&a,&b),a,b)
22     {
23         int ans;
24         ans=FastPower(a,b);
25         cout<<ans%1000<<endl;
26     }
27     return 0;
28 }

 

posted on 2020-04-01 18:15  轻描淡写ぃ  阅读(154)  评论(0编辑  收藏  举报

导航