您的位置:首页 > 其它

HDU-2089-不要62

2015-04-15 17:53 239 查看
点这里查看题目

#include<stdio.h>
#define maxn 1000010
int f[maxn];
int weishu(int a)
{
int b=1;
while(1)
{
if(a/10 == 0)
break;
else
{
a/=10;
b++;
}
}
return b;
} //此函数用于输出参数是几位 记录位数是为了下面方便标记不吉利的数
int fun(int x,int n)   //此处n是位数  x是要判断的数
{
int flag=0;
for(; n>0; n--)
{
if(x%10==4||x%100==62)
{
flag=1;
break;
}
else
x/=10;
}
return flag;
} //此函数用于将所有含有4或者62 的数字标记为 1
int main()
{
int n,m,i,j,wei;
for(i=4; i<maxn; i++)
{
wei=weishu(i);
f[i]=fun(i,wei);
}
// 记录范围内不要的数 这里是打表用数组储存不要的数 避免数据过多超时
while(~scanf("%d %d",&n,&m)&&n||m)
{
int ans=0;
for(j=n; j<=m; j++)
if(f[j])
ans++;
printf("%d\n",m-n-ans+1);
}
return 0;
}


题目总结:

1、多数据重复处理问题 要记得使用自定义函数方便处理数据

2、学习用数据记录储存数据

3、此题考虑位数是关键
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: