ccf認證試題——201912-1【報數】

【原文出處,可以提交代碼打分】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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章