Problem Description
求A^B的最后三位数表示的整数。
说明:A^B的含义是“A的B次方”
Input
输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。
Output
对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。
输入样例
2 3
12 6
6789 10000
0 0
输出样例
8 984 1
快速幂的求幂手段,递归求幂次数为偶则底数平方,指数缩倍,幂次为奇则将ans*底数
附ac代码
#include<bits/stdc++.h> using namespace std; int ans; int ci(int a,int b) { if(b==0) ans=1; else { ans=ci(a*a%1000,b/2); if(b%2==1) ans*=a; } return ans%1000; } int main() { int a,b; while(scanf("%d%d",&a,&b)==2&&(a!=0||b!=0)) { cout<<ci(a%1000,b)<<endl; } return 0; }
标签:hdu,int,样例,ci,人见人爱,实例,ans,快速 From: https://www.cnblogs.com/ruoye123456/p/16961724.html