欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-14 09:37:50
...

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

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

 

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

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

解答比较容易想到:

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;
}

 

相关标签: 信息学奥赛