ccf认证试题——201912-1【报数】
程序员文章站
2022-07-14 09:37:50
...
【原文出处,可以提交代码打分】http://118.190.20.162/view.page?gpid=T100
感觉题目水平还是挺高的,蛮有意思的一个题,考察综合程度比较好。
解答比较容易想到:
1、先构建一个函数算那个7的条件:模运算、降权取低位看是不是7。
2、然后记录不跳过的次数和给跳过的人记录跳过的次数。
有趣的是这个用for循环做的时候,可以很好的利用结束条件,看代码:
#include<bits/stdc++.h>
using namespace std;
//丁甲乙丙跳过次数
int tg[4]={0};
//数的个数,当前数,一共数了多少个数
int n,cur=1,cnt=1;
bool Seven(int n){
if(n%7==0){ //被7整除
return true;
}
while(n>0){ //带7
if(n%10==7){
return true;
}
n/=10;
}
return false;
}
int main(){
cin>>n;
for(cur=1;cnt<=n;cur++){
if(Seven(cur)){ //跳过
tg[cur%4]++;
}else{
cnt++; //不跳过
}
}
for(int i=1;i<4;i++){
cout<<tg[i]<<endl;
}
cout<<tg[0]<<endl;
return 0;
}