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