首页 > 其他 > 详细

csp 2019-12-1 报数

时间:2020-03-15 00:36:09      阅读:65      评论:0      收藏:0      [点我收藏+]

题目:

技术分享图片

 

 技术分享图片 技术分享图片

 

 这个题目我考的时候做法是:

10 
11 #include<cstdio>
12 #include<iostream>
13 #include<cstring>
14 using namespace std;
15 int main(){
16     int n,i=0;
17     scanf("%d",&n);
18     int a=0,b=0,c=0,d=0;
19     for(int i=1;i<=n;i++){
20         if(i%4==1){
21         if(i%7==0||i%10==7||i/10%10==7){
22         a++;
23         n++;
24         }
25         }
26         if(i%4==2){
27         if(i%7==0||i%10==7||i/10%10==7){
28         b++;
29         n++    ;
30         }
31         }
32         if(i%4==3){
33         if(i%7==0||i%10==7||i/10%10==7){
34         c++;
35         n++;
36         }
37         }
38         if(i%4==0){
39         if(i%7==0||i%10==7||i/10%10==7){
40             d++;
41             n++;
42         }
43         }
44     }
45     printf("%d\n%d\n%d\n%d",a,b,c,d);
46     return 0;
47 }

但是只有60分,呜呜呜呜呜呜呜呜

然后发现问题出在,我并没有注意到n=666,我的代码只针对两位数的n,果然考试脑子不清楚~

改进代码如下:

 1 #include<iostream> 
 2 
 3 #include<cstring>
 4 
 5 using namespace std;
 6 
 7 int a[4];
 8 bool f(int x){
 9     for(;x!=0;x/=10)
10     if(x%10==7)
11     return true;
12     return false;
13 }
14 int main(){
15     int n;
16     scanf("%d",&n);
17     memset(a,0,sizeof(a));
18     for(int i=1;n>0;i++)
19     {  if(i%7==0||f(i))
20         a[i%4]++;
21         else
22         n--;
23     }
24     for(int i=1;i<=3;i++)
25     printf("%d\n",a[i]);
26     printf("%d\n",a[0]);
27     return 0;
28 
29 }

 

csp 2019-12-1 报数

原文:https://www.cnblogs.com/miao-xixixi/p/12495126.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!