标签:des style blog http color os io java strong
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)
Total Submission(s): 7763 Accepted Submission(s): 2717
#include<iostream> #include<cstring> #include<cstdio> using namespace std; __int64 dp[25][3]; int bit[25]; void init() { memset(dp,0,sizeof(dp)); int i; dp[0][0]=1; for(i=1;i<=20;i++) { dp[i][0]=dp[i-1][0]*10-dp[i-1][1]; //dp[i][0] 表示i位数字中不含49的数字的个数 dp[i][1]=dp[i-1][0]; //dp[i][1] 表示i位数字中以9开头的数字的个数 dp[i][2]=dp[i-1][2]*10+dp[i-1][1]; ////dp[i][2] 表示i位数字中含有49的数字的个数 } } __int64 solve(__int64 n) { memset(bit,0,sizeof(bit)); int len=1,i; __int64 temp=n; while(temp) { int r=temp%10; bit[len++]=r; temp=temp/10; } int flag=0; __int64 ans=0; bit[len]=0; for(i=len-1;i>=1;i--) { ans+=dp[i-1][2]*bit[i]; if(flag) { ans+=dp[i-1][0]*bit[i]; } //if(!flag&&bit[i+1]==4&&bit[i]>=9) //{ // ans+=dp[i][1]; // } if(!flag&&bit[i]>4) { ans+=dp[i-1][1]; } if(bit[i+1]==4&&bit[i]==9) flag=1; } return ans; } int main() { int T; __int64 r; scanf("%d",&T); init(); while(T--) { scanf("%I64d",&r); printf("%I64d\n",solve(r+1)); } return 0; }
标签:des style blog http color os io java strong
原文地址:http://www.cnblogs.com/cancangood/p/3946577.html