题目:
2089题PS:这道题刚看到的时候好纠结,把数据存在int不好找4和62 但是存在int数组又不好递增
所以就要学一个新的函数了——itoa();
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int s[1000000],i;
char str[8];
void init()
{
for(i=1;i<=1000000;i++)
{
itoa(i,str,10);
if(strstr(str,"4")!=NULL||strstr(str,"62")!=NULL)
s[i]=0;
else
s[i]=1;
}
}
int main()
{
int n,m,k,cnt;
init();
while(~scanf("%d%d",&n,&m))
{
cnt=0;
if(n==0&&m==0)
break;
for(k=n;k<=m;k++)
{
cnt+=s[k];
}
printf("%d\n",cnt);
}
return 0;
}
小知识:
itoa(i,str,10);
就是将in i;转换成char str; 10代表10进制
itoa有3个参数,分别是:需要改变的数;存放数组;进制。(本题是整形转换为字符串)
其次是strstr的应用~~~
功能是搜索"字符(串)",如果找到了就返回该字符串所在的位置,如果没有找到就返回空指针NULL
像本题就可以先将整数转换成字符串,之后再搜索4和62是否在字符串中,如果都没有返回NULL指针,那么cnt++;
网友评论