HDU-2089-不要62

来源:互联网 发布:丹尼·格兰杰数据 编辑:程序博客网 时间:2024/05/30 05:42

点这里查看题目

#include<stdio.h>#define maxn 1000010int 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 的数字标记为 1int 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、此题考虑位数是关键

0 0