报数


from CCF-CSP 2019-12-1
Time limit:1s
Memory limit:512MB

报数_#include


报数_ios_02


简单累加问题,我们可以发现,一个数除于7等于1的话,那么这个数刚好对应甲,2对应乙,3对应丙,0对应丁

所以需要跳过的那个数除于7等于多少,就给对应的人累加1。

ac代码:
#include<iostream>
using namespace std;
int n,note = 0; //n如题,note记录已经报的数的个数(不包含跳过的)
int a,b,c,d; //分别表示甲乙丙丁的跳过次数
bool have7(int x){
while(x){
if(x % 10 == 7)
return true;
x /= 10;
}
return false;
}
int main(){
cin>>n;
for(int i = 1;note < n;++i){
if(i % 7 == 0 || have7(i)){
switch (i % 4){
case 1:
++a;break;
case 2:
++b;break;
case 3:
++c;break;
case 0:
++d;break;
}
}
else
++note;
}
cout<<a<<"\n"<<b<<"\n"<<c<<"\n"<<d;
return 0;
}