跳到主要内容
0%
约 1 分钟

CSP 201912-1 报数 C++ 100


题目

【题目描述】 甲乙丙丁决定玩一个报数的游戏来打发时间。游戏规则为四个人从1开始轮流进 行报数,但如果需要报出的数是7的倍数或含有数字7则直接跳过。 此外大家约定,在总共报出了个数后(不计入被跳过的数)游戏结束。现在需要 你来帮忙统计,游戏过程中每个人各自跳过了几次。

【输入格式】 从标准输入读入数据。 输入仅一行,包含一个正整数,表示报出了多少个数后游戏结束。

【输出格式】 输出到标准输出。 输出共四行,每行一个整数,依次表示甲乙丙丁四人在游戏过程中跳过的次数。

【样例1输入】

20

【样例1输出】

2
1
1
0

【样例1解释】 报数过程为: 甲:1,乙:2,丙:3,丁:4 甲:5,乙:6,丙:跳过,丁:8 甲:9,乙:10,丙:11,丁:12 甲:13,乙:跳过,丙:15,丁:16 甲:跳过,乙:18,丙:19,丁:20 甲:跳过,乙:22,丙:23,丁:24 在丁报出24后,四个人总计报出了20个数,游戏结束。

代码

#include<bits/stdc++.h>
using namespace std;

using ll = long long;

int ifhave7(ll x)
{
    while(x>0)
    {
        if(x%10==7)
            return 1;
        else
            x=x/10;
    }
    return 0;
}

int main()
{
    ll A[4]={0};
    ll n;
    ll i=1,j=0,cnt=0;

    cin>>n;
    while(cnt<n)
    {
        if(i%7==0ifhave7(i))
            A[j]++;
        else
            cnt++;
        i++;
        j=(j+1)%4;
    }
    for(j=0;j<4;j++)
        cout<<A[j]<<endl;
    return 0;
}

向 AI 提问(基于本文内容)

评论