共42道题,当前是第21

初赛真题

求 $A$ 的 $B$ 次方的最后三位数
输入:两个正整数 $A$ 和 $B$。

输出: $A^B$的最后三位。

样例输入1
```
2 3
```
样例输出1
```
8
```
样例输入2
```
6789 10000
```
样例输出2
```
984
```
#include<cstdio>
using namespace std;

int FastExponentiation(int a, int b, int mod) {
	int answer = ___(1)___ ;
	while (b != 0) {
		if(___(2)___){
			answer *= a;
			___(3)___;
		}
		b /= 2;
		___(4)___;
		a %= mod;
	}	
	return answer;
}

int main() {
	int a, b;
	scanf("%d %d", &a, &b);
	printf("%d\n", ___(5)___ );
	return 0;
}

1. B。answer用于累乘,初始值应设为 $1$。
2. A。不断将 $b$ 转化为二进制数,若当前位为 $1$, 累乘 $a$ 的 $2^k$ 次幂。
3. C。取后三位相当于对 $1000$ 取余运算。
4. A。$b$ 缩小了一半,所以 $a$ 要变成它的平方: $a *= a;$。.
5. B。题目要求 $A^B \% 1000$ 的结果。

Question

1. (1)处应填()。

2. (2) 处应填()。

3. (3) 处应填()。

4. (4)处应填()。

5. (5)处应填()。

陈伦制作 版权所无 粤ICP备16127491号-1