正在载入在线练习界面,本页内容可直接阅读…

AK CSP › CSP-S 2026 第一轮真题 › 第 15 题

CSP-S 2026 第一轮 第 15 题:执行 power(2, 100, 1000) 调用下列函数,返回值是

单项选择 · 函数与递归 · 答案 B

题目

执行 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 为本轮开始时的值):

ba执行 if 后的 r
10021
5041
251616
1225616
653616
3296\(16\times296\bmod1000=736\)
1616\(736\times616\bmod1000=376\)

随后 b 变为 0,循环结束,返回 376。

真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1 京公网安备11010502062986号