ccf认证试题——201912-1【报数】

【原文出处,可以提交代码打分】http://118.190.20.162/view.page?gpid=T100

感觉题目水平还是挺高的,蛮有意思的一个题,考察综合程度比较好。

 

ccf认证试题——201912-1【报数】_第1张图片

ccf认证试题——201912-1【报数】_第2张图片

解答比较容易想到:

1、先构建一个函数算那个7的条件:模运算、降权取低位看是不是7。

2、然后记录不跳过的次数和给跳过的人记录跳过的次数。

有趣的是这个用for循环做的时候,可以很好的利用结束条件,看代码:

#include
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<

 

你可能感兴趣的:(信息学奥赛)