文章

【GESP】C++二级真题 luogu-b4036 [GESP202409 二级] 数位之和

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

luogu-B4036 [GESP202409 二级] 数位之和

题目要求

题目描述

小杨有 $n$ 个正整数,他认为一个正整数是美丽数字当且仅当该正整数每一位数字的总和是 $7$ 的倍数。

小杨想请你编写一个程序判断 $n$ 个正整数哪些是美丽数字。

输入格式

第一行包含一个正整数 $n$,表示正整数个数。
之后 $n$ 行,每行一个包含一个正整数 $a_i$。

输出格式

对于每个正整数输出一行一个字符串,如果是美丽数字则输出 Yes,否则输出 No

输入 #1

1
2
3
4
3
7
52
103

输出 #1

1
2
3
Yes
Yes
No

数据规模与约定

对全部的测试数据,保证 $1 \leq n \leq 10^5$,$1 \leq a_i \leq 10^5$。


题目分析

解题思路

  1. 读取输入的正整数个数 $n$。
  2. 对于每个正整数 $a_i$,计算其每一位数字的总和。
  3. 判断总和是否能被 $7$ 整除,如果能,则输出 Yes,否则输出 No
  4. 重复步骤 $2$ 和 $3$,直到处理完所有 $n$ 个正整数。

—·

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int main() {
    int n; // 输入的正整数个数
    cin >> n;
    int a; // 每个正整数

    for (int i = 1; i <= n; i++) {
        cin >> a; // 读取每个正整数
        int ans = 0; // 初始化答案
        while (a != 0) {
            int j = a % 10; // 获取当前数字的最后一位
            ans += j; // 将最后一位加到答案中
            a /= 10; // 移除当前数字的最后一位
        }
        if (ans % 7 == 0) { // 如果答案能被7整除
            cout << "Yes" << endl; // 输出Yes
        } else {
            cout << "No" << endl; // 否则输出No
        }
    }
}

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

GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页

luogu-”系列题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

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

本文由作者按照 CC BY 4.0 进行授权