文章

【GESP】C++一级练习 luogu-B2068,统计满足条件的 4 位数

属于GESP一级知识点,整除、取余和循环语句综合练习。

luogu-B2068

题目要求

描述

给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位数上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。

输入

输入为两行,第一行为四位数的个数 $n$,第二行为 $n$ 个的四位数。($n\leq100$)。

输出

输出为一行,包含一个整数,表示满足条件的四位数的个数。

输入样例-1

5
1234 1349 6119 2123 5017

输出样例-1

3


题目分析

  • 读取$n$的值,表示后续输入的数量
  • 循环$n$次,读取每个四位数
  • 对每个四位数,计算个位数减去千位数减去百位数减去十位数的结果
  • 如果结果大于0,则计数增加1
  • 输出满足条件的四位数的个数

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int main() {
    int n; // 定义变量n
    cin >> n; // 从输入流中读取n的值
    int a; // 定义变量a
    int ans = 0; // 定义变量ans并初始化为0
    for (int i = 1; i <= n; i++) { // 循环n次
        cin >> a; // 从输入流中读取a的值
        int b, c, d, e; // 定义变量b, c, d, e
        b = a / 10 / 10 / 10; // 计算a的千位数
        c = a / 10 / 10 % 10; // 计算a的百位数
        d = a / 10 % 10; // 计算a的十位数
        e = a % 10; // 计算a的个位数
        if (e - d - c - b > 0) { // 如果a的个位数减去十位数减去百位数减去千位数的结果大于0
            ans += 1; // ans加1
        }
    }
    cout << ans; // 输出ans的值
    return 0; // 返回0,表示程序执行成功
}

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

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

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