今天开始备战csp认证考试,目标是6分
下午的第一题
#include<stdio.h>
#include<math.h>
int main(){
int f(int n);
int number=0;
int relnumber=0;
int a=0,b=0,c=0,d=0;
int m=1;
int n=0;
scanf("%d",&n);
while(relnumber!=n){
number++;
if(number%7!=0&&!f(number)){
relnumber++;
}
else{
switch(m){
case 1:a++;break;
case 2:b++;break;
case 3:c++;break;
case 4:d++;break;
}
}
m++;
if(m>4) m=1;
}
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
printf("%d\n",d);
}
int f(int n){
int m=1;
while(m>0){
m=n%10;
if(m==7) {
return 1;
break;
}
n=n/10;
}
return 0;
}
哎碰壁了,可能是格式不太行吧
网上找了标准100分的答案
确实精简干练
int main(void){
int n,i,index,count,temp;
int result[4]={0}; //结果集
scanf("%d",&n);
count=1; //计数
index=1; //报数
while(count<=n){
if(index%7==0){//判断是否是7的倍数
result[(index-1)%4]+=1;
}else{
temp=index;
while(temp){//是否含有7
if(temp%10==7){
result[(index-1)%4]+=1;
break;
}
temp/=10;
}
if(temp==0){//无关
count++;
}
}
index++;
}
for(i=0;i<4;i++){
printf("%d\n",result[i]);
}
return 0;
}