标签:
http://acm.hdu.edu.cn/showproblem.php?pid=2035
求A^B的最后三位数表示的整数。
说明:A^B的含义是“A的B次方”
输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。
对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。
2 3
12 6
6789 10000
0 0
8
984
1
#include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<vector> #include<map> using std::map; using std::min; using std::find; using std::pair; using std::vector; using std::multimap; #define pb(e) push_back(e) #define sz(c) (int)(c).size() #define mp(a, b) make_pair(a, b) #define all(c) (c).begin(), (c).end() #define iter(c) __typeof((c).begin()) #define cls(arr, val) memset(arr, val, sizeof(arr)) #define cpresent(c, e) (find(all(c), (e)) != (c).end()) #define rep(i, n) for(int i = 0; i < (int)n; i++) #define tr(c, i) for(iter(c) i = (c).begin(); i != (c).end(); ++i) const int M = 1000; const int N = 100001; const int INF = 0x3f3f3f3f; void pow_mod(int A, int B) { int ans = 1; while(B) { if(B & 1) ans = ans * A % M; A = A * A % M; B >>= 1; } printf("%d\n", ans); } int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "w+", stdout); #endif int A, B; while(~scanf("%d %d", &A, &B), A + B) { pow_mod(A, B); } return 0; }
标签:
原文地址:http://www.cnblogs.com/GadyPu/p/4792762.html