此代码超时
#include <stdio.h>
#include <string.h>
int main()
{
int i,n,m,t;
char s[10];
while(scanf("%d %d",&n,&m)!=EOF)
{ t=0;
for(i=n;i<=m;i++)
{
sprintf(s,"%d",i);
if(strstr(s,"62")||strstr(s,"4")) t++;
}
printf("%d
",m-n+1-t);
}
return 0;
}
更正后
#include <stdio.h>
#include <string.h>
int a[1000024]={0};
int main()
{
int i,n,m,t;
char s[10];
for(i=1;i<=1000000;i++)
{
sprintf(s,"%d",i);
if(!(strstr(s,"62")||strstr(s,"4"))) a[i]=1;
}
while(scanf("%d %d",&n,&m)!=EOF)
{ t=0;
if(n==0&&m==0) break;
for(i=n;i<=m;i++)
{
if(a[i]==1) t++;
}
printf("%d
",t);
}
return 0;
}
此次用到函数sprintf(s,"%d",i),是将数字转换为字符串的;
还有一个函数itoa(i,s,10); 后面的10是指十进制,头文件<stdlib.h>中,与之有相反功能的函数是atoi
#include <stdlib.h>
#include <stdio.h>
int
main(
void
)
{
int
n;
char
*str =
"12345.67"
;
n =
atoi
(str);
printf
(
"int=%d
"
,n);
return0;
}