正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-S 2026 第一轮真题 › 第 15 题
CSP-S 2026 第一轮 第 15 题:执行 power(2, 100, 1000) 调用下列函数,返回值是
题目
执行 power(2, 100, 1000) 调用下列函数,返回值是( )。
long long power(long long a, long long b, long long p) {
long long r = 1 % p;
while (b) {
if (b & 1)
r = r * a % p;
a = a * a % p;
b >>= 1;
}
return r;
}选项
- A. 576
- B. 376
- C. 976
- D. 176
答案
B
题解
答案是 B. 376。
这段代码是快速幂取模,计算的是 \(a^b\bmod p\),所以本题求 \(2^{100}\bmod1000\)。
循环中:
b & 1:判断b是否为奇数,若是,就把当前a乘进r,并取模。a = a * a % p:将a平方后取模。b >>= 1:将b除以 2,向下取整。
初始 r = 1,逐轮计算如下(a、b 为本轮开始时的值):
b | a | 执行 if 后的 r |
|---|---|---|
| 100 | 2 | 1 |
| 50 | 4 | 1 |
| 25 | 16 | 16 |
| 12 | 256 | 16 |
| 6 | 536 | 16 |
| 3 | 296 | \(16\times296\bmod1000=736\) |
| 1 | 616 | \(736\times616\bmod1000=376\) |
随后 b 变为 0,循环结束,返回 376。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号