题目![在这里插入图片描述](https://img-blog.csdnimg.cn/0ae9309f4a7942d89e63691a0494975d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATmFuY2Uu,size_20,color_FFFFFF,t_70,g_se,x_16)
分析
暴力解决就好了,
分别用两个数记录,num是正常数需要被判断的数,count是记录未被跳过的数的个数,采用数组和求余的方式记录甲乙丙丁的跳过情况
100分 AC代码
#include<bits/stdc++.h>
using namespace std;
int a[4];
bool pd(int num) {
if(num%7==0)//7的倍数
return true;
while(num!=0) {
int x=num%10;
if(x==7)//含数字7
return true;
num/=10;
}
return false;
}
int main() {
int n;
cin>>n;
int count=0;
int num=0;
while(1){
num++;// 数字先报出
count++;//记录报出的数字个数
if(pd(num)){
if(num%4==0)
a[3]++;
else
a[num%4-1]++;
count--;//如果满足条件 再减去
}
if(count>=n)//判断是否达到临界条件
break;
}
cout<<a[0]<<endl<<a[1]<<endl<<a[2]<<endl<<a[3]<<endl;
}