Bomb(hdu 3555)
生活随笔
收集整理的這篇文章主要介紹了
Bomb(hdu 3555)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:給定一個閉區間,求區間內有多少數中含“49”
/*dp[i][j]表示i位數以j為最高位位中的所有不符合數的個數。然后把數字拆分,亂搞即可。 */ #include<cstdio> #include<iostream> #define lon long long using namespace std; lon dp[25][12]; void init(){dp[0][0]=1;for(int i=1;i<=20;i++)for(int j=0;j<=9;j++)for(int k=0;k<=9;k++)if(!(j==4&&k==9))dp[i][j]+=dp[i-1][k]; } lon solve(lon n){int a[25],len=0;while(n){a[++len]=n%10;n/=10;}a[len+1]=0;lon ans=0;for(int i=len;i;i--){for(int j=0;j<a[i];j++)if(!(a[i+1]==4&&j==9))ans+=dp[i][j];//當高位出現49時,低位就不用再計算了if(a[i]==9&&a[i+1]==4) break;}return ans; } int main(){init();int T;scanf("%d",&T);while(T--){lon x;scanf("%I64d",&x);printf("%I64d\n",x+1-solve(x+1));}return 0; }?
轉載于:https://www.cnblogs.com/harden/p/6288022.html
總結
以上是生活随笔為你收集整理的Bomb(hdu 3555)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java删除文件夹及其内部文件
- 下一篇: hfss螺旋平面_微波射频网HFSS平面