CCF-CSP C/C++ 201912-1 报数 题解

Posted DonquixoteXXXXX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF-CSP C/C++ 201912-1 报数 题解相关的知识,希望对你有一定的参考价值。

CCF-CSP C/C++ 201912-1 报数 题解

一、题目描述

1、背景

甲乙丙丁决定玩一个报数的游戏来打发时间。

游戏规则为四个人从 1 开始轮流进行报数,但如果需要报出的数是 7 的倍数或含有数字 7 则直接跳过。

此外大家约定,在总共报出了 n 个数后(不计入被跳过的数〉游戏结束。

现在需要你来帮忙统计,游戏过程中每个人各自跳过了几次。

2、输入格式

输入仅一行,包含一个正整数 n,表示报出了多少个数后游戏结束。

3、输出格式

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

4、数据范围

测试点 1∼5,保证 n≤102;
测试点 6∼10,保证 n≤666。

5、样例

输入样例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 个数,游戏结束。

输入样例2:

66

输出样例2:

7
5
11
5

二、代码

我的代码如下:

#include <iostream>
#include <cstdio>
using namespace std;

bool check7(int n)
	while(n)
		int x=n%10;
		n/=10;
		if(x==7)return true;
	
	return false;


int main()

	int n;
	scanf("%d",&n); 
	int count[5]=0;
	int i;
	for(i=1;i<=n;i++)
		if(i%7==0||check7(i))
			//cout<<i<<" "<<endl;
			int x=i%4;
			if(x==1)count[1]++;
			else if(x==2)count[2]++;
			else if(x==3)count[3]++;
			else if(x==0)count[4]++;
			n++;
		
				
	 
for(i=1;i<=4;i++)
	cout<<count[i]<<endl;

	
	return 0;


以上是关于CCF-CSP C/C++ 201912-1 报数 题解的主要内容,如果未能解决你的问题,请参考以下文章

CCF-CSP C/C++ 201903-1 小中大 题解

CCF-CSP C/C++ 201909-1 小明种苹果 题解

CCF-CSP C/C++ 201912-2 回收站选址 题解

CCF-CSP C/C++ 201909-2 小明种苹果(续) 题解

CCF-CSP C/C++ 202009-1 称检测点查询 题解

CCF-CSP题解 201912-3 化学方程式