题目描述:
甲乙丙丁决定玩一个报数的游戏来打发时间。游戏规则为四个人从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;
}