题目描述
幂a^b的末3位数是多少?
【输入】
两个正整数a,b。1≤a≤100,1≤b≤10000。
【输出】
从高位到低位输出幂的末三位数字,中间无分隔符。若幂本身不足三位,在前面补零。
代码解答
#include<iostream>
using namespace std;
int main() {
/*
* 初等数论 模运算性质:
* 1. (a+b) %m= (a%m+b%m) %m
* 2. (a-b) %m= (a%m- b%m) %m
* 3. (a*b) %m= (a%m*b%m) %m
* a^b= (a*a*a*a*a*a) %m= (A*a) %m ( (a%m*a%m) %m *a%m) %m *a%m) %m *a%m) %m
* 4. (a/b) %m= (a%m/ b%m) %m不成立,需要引入逆的概念
*/
int a, b;
cin >> a >> b;
int ans = 1;
int m = 1000;
for (int i = 1; i <= b; i++) {
ans *= a%m;
ans %= m;
}
printf("%03d", ans );
return 0;
}