本文主要是介绍CCF报数201912-1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
代码:70分代码。(在测试时发现输入6,丙竟然输出1!)
这种做法属于暴力做法,由于n<666,故最多报666*4+K,这个数字不会超过10000.所以可以通过穷举2位、3位、4位数字的不同位置上为7的情况。
#include<stdio.h>
int main()
{int n;scanf("%d",&n);int count=0;int num_jia=0,num_yi=0,num_bing=0,num_ding=0;int num=1;while(count<n){count+=1;num+=1;if(num%7==0||num%10==7||num/10==7||num%100%10==7||(num%100)/10==7||num/100==7||num/1000==7||(num%1000)/100==7||((num%1000)%100)/10==7||((num%1000)%100)%10==7){count-=1;if(num%4==1){num_jia+=1;}else if(num%4==2){num_yi+=1;}else if(num%4==3){num_bing+=1;}else if(num%4==0){num_ding+=1;}}}printf("%d\n%d\n%d\n%d\n",num_jia,num_yi,num_bing,num_ding);return 0;}
100分代码:
修改的地方是num的初值,将num=1,改为num=0.
#include<stdio.h>
int main()
{int n;scanf("%d",&n);int count=0;int num_jia=0,num_yi=0,num_bing=0,num_ding=0;int num=0;while(count<n){count+=1;num+=1;if(num%7==0||num%10==7||num/10==7||num%100%10==7||(num%100)/10==7||num/100==7||num/1000==7||(num%1000)/100==7||((num%1000)%100)/10==7||((num%1000)%100)%10==7){count-=1;if(num%4==1){num_jia+=1;}else if(num%4==2){num_yi+=1;}else if(num%4==3){num_bing+=1;}else if(num%4==0){num_ding+=1;}}}printf("%d\n%d\n%d\n%d\n",num_jia,num_yi,num_bing,num_ding);return 0;}
另外一种方法:可以使用循环每次先%10取余之后,在/10,直到等于0.(这种方法实际上是从各个位往前面逐个位置进行判断)
这篇关于CCF报数201912-1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!