题目背景:
代码如下:
#include<iostream>
using namespace std;
bool judge(int goal)
{
if(goal % 7 == 0)//7的倍数
return false;
while(goal > 0)//包含7
{
if(goal%10==7)
return false;
goal /= 10;
}
return true;
}
int main(void)
{
int count[5] = {0};
int n;
cin >> n;
for (int temp = 1; temp <= n;temp++)//从1开始报数到n个
{
if (judge(temp) == false) //是7倍数或包含7
{
n++; //这个数不算要补回来
if (temp % 4 == 1) //甲
count[1]++;
else if (temp % 4 == 2) //乙
count[2]++;
else if (temp % 4 == 3) //丙
count[3]++;
else //丁
count[4]++;
}
}
printf("%d\n%d\n%d\n%d\n",count[1],count[2],count[3],count[4]);
return 0;
}
题目分析:
1.题目主要考察怎么处理含7的数或7的倍数。不断取模除10即可判定是否该数为含7的数。
2.注意题目要求的是要报出n个数。跳过的数要补回来。