CCF CSP 2019-12-1 报数 C语言100分
报数 完成时间11-17 16:14 代码长度348B C 正确 100分 耗时0ms 空间使用2.527MB
很奇怪的是我将include7的函数放在main函数中,只能得到50分,显示错误,但提出来就可以100分。有没有大神解释一下。想不通 最后附上50分的代码,希望有人解答一下。
思路:如果当前数为7的倍数或含有7,上限n+1。
用n%7==0
判断n是不是7的倍数。
用i=n%10; if(i==7) { return 1; }
判断是否含有7;
不建议使用i=k%10%7; if(i==0) { return 1; }
这个有特殊情况,如果个位为0,则直接return 1。
以下为100分C语言代码:
#include<stdio.h>
int include7(int k)
{
int i;
while(k)
{
i=k%10;
if(i==7)
{
return 1;
}
k=k/10;
}
return 0;
}
int main()
{
int n,m=1,k;
int cnt[4]={0};
scanf("%d",&n);
for(m=1;m<=n;m++)
{
k=include7(m);
if(m%7==0||k)
{
cnt[m%4]++;
n++;
}
}
printf("%d\n%d\n%d\n%d",cnt[1],cnt[2],cnt[3],cnt[0]);
return 0;
}
以下为50分代码:
#include<stdio.h>
int main()
{
int n,m=1,i,k;
int cnt[4]={0};
scanf("%d",&n);
for(m=1;m<=n;m++)
{
k=m;
if(m%7==0)
{
cnt[m%4]++;
n++;
continue;
}
while(k)
{
i=k%10;
k=k/10;
if(i==7)
{
cnt[m%4]++;
n++;
continue;
}
}
}
printf("%d\n%d\n%d\n%d",cnt[1],cnt[2],cnt[3],cnt[0]);
return 0;
}