HDU-2089-不要62

简介: HDU-2089-不要62
#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、此题考虑位数是关键

目录
相关文章
|
Java 人工智能 Windows
|
算法 Java 文件存储
|
机器学习/深度学习
hdu 2604 Queuing
点击打开hdu 2604 思路: 递推+矩阵快速幂 分析; 1 根据题目的意思,我们可以求出F[0] = 0 , F[1] = 2 , F[2] = 4 , F[3] = 6 , F[4] = 9 , F[5] = 15 2 那么根据上面...
799 0
|
人工智能
hdu2084数塔
经典问题了,题意我就不叙述了(题目是中文的~) 分析:dp[i][j]表示在第i行第j个位置上能取得的最大和,那么要从最后一行开始算起,到塔顶结束:dp[i][j] = a[i][j]+max(dp[i+1][j], dp[i+1][j+1]), 边界条件是dp[n][j] = a[n][j]; ...
669 0
hdu 4463 Outlets
点击打开链接hdu 4463 思路:最小生成树+kruskal 分析: 1 题目要求的找到n个商店组成n-1条边,并且要求耐克和苹果商店肯定要相连,求最短长度 2 很明显的最小生成树的模板题,由于要求耐克和苹果的商店要在一起那么就要把这两个商店编号合并到同一个集合,然后在利用kruskal计算。
907 0
hdu 3746 Cyclic Nacklace
点击打开链接hdu 3746 思路:kmp+字符串的最小循环节问题 分析: 1 题目要求的是给定一个字符串,问我们还需要添加几个字符可以构成一个由n个循环节组成的字符串。
703 0