注意,只有不是7的倍数,也不含有7时sum才会自增,直到大于n值,关于7的两种情况满足其一即跳过。甲乙丙丁的计数可以通过数组完成,在判断时注意四个一循环,所以通过对4取余判断即可。
#include <iostream>
using namespace std;
bool ishave(int n){
if(n==0)
return false;
if(n%7==0)
return true;
while(n!=0){
if(n%10==7)
return true;
n /= 10;
}
return false;
}
int main(){
int n;
cin >> n;
int sum = 1,cnt[4] = {
0};
for(int i = 1;sum<=n;i++){
if(!ishave(i))
sum++;
else if(i%4==1&&ishave(i)){
cnt[0]++;
}
else if(i%4==2&&ishave(i)){
cnt[1]++;
}
else if(i%4==3&&ishave(i)){
cnt[2]++;
}
else if(i%4==0&&ishave(i)){
cnt[3]++;
}
}
for(int i = 0;i<4;i++){
cout << cnt[i] << endl;
}
return 0;
}