CCF 201912-1 报数

题目描述:

甲乙丙丁决定玩一个报数的游戏来打发时间。游戏规则为四个人从1开始轮流进行报数,当报的数满足下列条件之一时应当跳过:
1、含有数字7
2、是7的倍数
问:报出n个数后(跳过的数字不计入n),每个人各自跳过了几次?

例如n=8时:
甲:1
乙:2
丙:3
丁:4
甲:5
乙:6
丙:跳
丁:8
甲:9
结束!
答案为:
0
0
1
0

输入描述:

一个正整数n。

输出描述:

四行,分别是甲乙丙丁跳过数字的个数。

输入样例:

20

输出样例:

2
1
1
0

代码如下:

#include<cstdio>
#include<iostream>
using namespace std;
int a[6];
bool pd(int x)//判断x是否符合条件
{
	if(x%7==0)//7的倍数
		return 1;
	int t=x;
	while(t)
	{
		if(t%10==7)//含有数字7
			return 1;
		t/=10;
	}
	return 0;
}
int main()
{
	int n;
	cin>>n;
	int cnt=1,flag=1;
	while(cnt<=n)
	{
		for(int i=1;i<=4&&cnt<=n;i++,cnt++)
			if(pd(cnt))
			{
				a[i]++;
				n++;//跳过一个数,上限就+1 
			}
	}
	for(int i=1;i<=4;i++)
		printf("%d\n",a[i]);
	return 0;
}
发布了144 篇原创文章 · 获赞 135 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Nothing_but_Fight/article/details/103591081