luogu-B2075 幂的末尾

luogu-B2075 幂的末尾

GESP二级练习,多层循环和分支练习,难度★★☆☆☆。

luogu-B2075 幂的末尾

题目要求

题目描述

aba^b 的末 33 位数是多少?

输入格式

两个正整数 aabb1a1001 \le a \le 1001b100001 \le b \le 10000

输出格式

从高位到低位输出幂的末三位数字,中间无分隔符。若幂本身不足三位,在前面补零。

输入 #1

2 3

输出 #1

008

输入 #2

7 2011

输出 #2

743

题目分析

解题思路

  1. 首先,我们需要理解题目的核心要求:

    • 计算 aba^b 的末3位数字
    • 不足3位需要在前面补0
  2. 解题思路:

    • 直接计算 aba^b 会导致数字过大,超出整型范围
    • 我们只需要关注末3位数字,可以在每次计算时只保留末3位
    • 具体做法是每次乘法后对1000取模
  3. 具体实现:

    • 读入底数a和指数b
    • 用一个变量ans记录当前结果,初始值为a
    • 循环b-1次:
      • 每次将ans乘以a
      • 取乘积的末3位(对1000取模)存回ans
    • 最后输出ans的3位数字,不足补0

{% include custom/custom-post-content-inner.html %}


示例代码

#include <cstdio>
#include <iostream>

using namespace std;
int main() {
    int a, b; // 定义底数a和指数b
    cin >> a >> b; // 读入底数a和指数b
    int ans = 1; // 初始化结果ans为1
    for (int i = 1; i <= b; i++) { // 循环b次
        int u = ans * a; // 计算当前结果乘以底数a
        ans = u % 1000; // 取乘积的末3位存回ans
    }
    printf("%03d", ans); // 输出结果的3位数字,不足补0
    return 0; // 返回0,表示程序正常结束
}

{% include custom/custom-post-content-footer.md %}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on