• 2089 不要62 数位dp-1


    Problem Description
    杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。
    杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。
    不吉利的数字为所有含有4或62的号码。例如:
    62315 73418 88914
    都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。
    你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。
     
    Input
    输入的都是整数对n、m(0<n≤m<1000000),如果遇到都是0的整数对,则输入结束。
     
    Output
    对于每个整数对,输出一个不含有不吉利数字的统计个数,该数值占一行位置。
     
    Sample Input
    1 100 0 0
     
    Sample Output
    80
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<algorithm>
     5 #include<cmath>
     6 #include<cstring>
     7 #include<stack>
     8 #include<queue>
     9 #include<map>
    10 #include<set>
    11 using namespace std;
    12 int f[10][10];
    13 int cal(int n)
    14 {
    15     int len=0,num[10],sum=0,i,j;
    16     num[0]=0;
    17     while(n)//分离出位数和该位数上的数
    18     {
    19         num[len]=n%10;
    20         len++;
    21         n=n/10;
    22     }
    23     num[len]=0;
    24     for(i=len-1;i>=0;i--)
    25     {
    26         for(j=0;j<num[i];j++)
    27         {
    28             if(j!=4&&!(j==2&&num[i+1]==6))//注意是两个(&&)而不是(||)和(&&)
    29                sum=sum+f[i+1][j];//不同位上不同数字进行求和
    30         }
    31         if(num[i]==4||(num[i+1]==6&&num[i]==2))//如果其中一个位数上的为4或者62的话这个车牌就不能用,所以跳出了
    32         break;
    33     }
    34     return sum;
    35 }
    36 int main()
    37 {
    38     int n,m,i,j,k;
    39     memset(f,0,sizeof(f));
    40     f[0][0]=1;
    41     for(i=1;i<=7;i++)//打表,初始化第i位上数字j其余位上都是0有多少个车牌数
    42     {
    43         for(j=0;j<=9;j++)
    44         {
    45             for(k=0;k<=9;k++)
    46             {
    47                 if(j!=4&&!(j==6&&k==2))
    48                   f[i][j]+=f[i-1][k];
    49             }
    50         }
    51     }
    52     while(cin>>n>>m&&(n||m))
    53     {
    54         cout<<cal(m+1)-cal(n)<<endl;
    55     }
    56     return 0;
    57 }
    View Code

    第一次接触数位dp,代码虽然不是自己想出来的,但也明白了是怎么回事

  • 相关阅读:
    关于《大道至简》第四章的收获
    关于《大道至简》第三章的收获
    关于《大道至简》第二章的收获
    关于《大道至简》第一章的收获
    【模板】AC自动机(加强版)
    求第 i 个素数 Meissel Lehmer Algorithm + 二分 【模板】
    Meissel Lehmer Algorithm 求前n个数中素数个数 【模板】
    黑匣子_NOI导刊2010提高(06) Splay Tree
    CF446B DZY Loves Modification 优先队列
    CF446A DZY Loves Sequences 简单dp
  • 原文地址:https://www.cnblogs.com/wang-ya-wei/p/5398671.html
Copyright © 2020-2023  润新知