zoukankan      html  css  js  c++  java
  • [HDU 2089] 不要62

    dp[dep][six]表示长度为dep的,上一位是否为6的不含62,不含4的数的个数

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int dp[10][2],dig[10];
     4 int dfs(int dep,int six,int flag){
     5     if(!dep)return 1;
     6     if(!flag&&dp[dep][six]!=-1)return dp[dep][six];
     7     int lim=flag?dig[dep]:9;
     8     int ans=0;
     9     for(int i=0;i<=lim;i++){
    10         if((six&&i==2)||i==4)continue;
    11         ans+=dfs(dep-1,i==6?1:0,flag&(i==lim));
    12     }
    13     if(!flag)dp[dep][six]=ans;
    14     return ans;
    15 }
    16 int solve(int x){
    17     int dd=0;
    18     while(x)dig[++dd]=x%10,x/=10;
    19     return dfs(dd,0,1);
    20 }
    21 int main(){
    22     memset(dp,-1,sizeof(dp));
    23     int A,B;
    24     while(1){
    25         scanf("%d%d",&A,&B);
    26         if(!A&&!B)break;
    27         printf("%d
    ",solve(B)-solve(A-1));
    28     }
    29     return 0;
    30 }
    View Code
  • 相关阅读:
    第二周作业
    第一次作业
    第0次作业
    第一次的作业
    第0次作业
    第三次作业
    %f使用时的注意事项
    关于c++停止工作
    第二次作业
    第一次作业
  • 原文地址:https://www.cnblogs.com/Ngshily/p/5483255.html
Copyright © 2011-2022 走看看