zoukankan      html  css  js  c++  java
  • 【HDOJ】【3555】Bomb

    数位DP


    cxlove基础数位DP第二题

    与上题基本相同(其实除了变成long long以外其实更简单了……)

     1 //HDOJ 3555
     2 #include<cmath>
     3 #include<vector>
     4 #include<cstdio>
     5 #include<cstring>
     6 #include<cstdlib>
     7 #include<iostream>
     8 #include<algorithm>
     9 #define rep(i,n) for(int i=0;i<n;++i)
    10 #define F(i,j,n) for(int i=j;i<=n;++i)
    11 #define D(i,j,n) for(int i=j;i>=n;--i)
    12 #define pb push_back
    13 using namespace std;
    14 int getint(){
    15     int v=0,sign=1; char ch=getchar();
    16     while(!isdigit(ch)) {if(ch=='-') sign=-1; ch=getchar();}
    17     while(isdigit(ch))  {v=v*10+ch-'0'; ch=getchar();}
    18     return v*sign;
    19 }
    20 const int N=1e7+10,INF=~0u>>2;
    21 const double eps=1e-8;
    22 typedef long long LL;
    23 /*******************template********************/
    24 LL dp[25][3];
    25 LL len,bit[25];
    26 //dp[i][0]表示不含49的i位数字
    27 //dp[i][1]表示不含49,且最高位为9 
    28 //dp[i][2]表示存在49 
    29 void init(){
    30     dp[0][0]=1;
    31     F(i,1,20){
    32         dp[i][0]=(LL)dp[i-1][0]*10-dp[i-1][1];
    33         dp[i][1]=dp[i-1][0];
    34         dp[i][2]=(LL)dp[i-1][2]*10+dp[i-1][1];
    35     }
    36 }
    37 LL solve(LL n){
    38     len=0; n++;
    39     for(;n;n/=10) bit[++len]=n%10;
    40     bit[len+1]=0;
    41     printf("check : ");
    42     D(i,len,1) printf("%lld",bit[i]);
    43     printf("
    ");
    44     LL ans=0;
    45     bool flag=false;
    46     D(i,len,1){
    47         ans+=(LL)dp[i-1][2]*bit[i];
    48         if (flag) ans+=(LL)dp[i-1][0]*bit[i];
    49         if (!flag && bit[i]>4) ans+=dp[i-1][1];
    50         if (bit[i+1]==4 && bit[i]==9) flag=true;
    51     }
    52     return ans;
    53 }
    54 int main(){
    55     init();
    56     int T;LL n;
    57     for(T=getint();T;T--){
    58         scanf("%I64d",&n);
    59         printf("%I64d
    ",solve(n));
    60     }
    61     return 0;
    62 }
    View Code
  • 相关阅读:
    引自天天安全网 ——※ 中华民族传统文化精髓___二十四孝 ※
    Microsoft 技术与安全大会
    Linux的用户和用户组管理
    vsftpd设置与使用总结
    MySQL与NoSQL——SQL与NoSQL的融合
    linux下查看用户及用户组的方法
    软件系统开发中的数据交换协议
    Ubuntu实用简单的FTP架设
    淘宝网商品库优化实践访谈
    current attention url
  • 原文地址:https://www.cnblogs.com/Tunix/p/4307298.html
Copyright © 2011-2022 走看看