[HDU 4734] F(x)

Posted Ngshily

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[HDU 4734] F(x)相关的知识,希望对你有一定的参考价值。

dp[dep][rest]表示长度为dep的F(x)<=rest的数的个数

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int dig[15],dp[15][5000];
 4 int dfs(int dep,int rest,int flag){
 5     if(rest<0)return 0;
 6     if(!dep)return 1;
 7     if(!flag&&dp[dep][rest]!=-1)return dp[dep][rest];
 8     int lim=flag?dig[dep]:9;
 9     int ans=0;
10     for(int i=0;i<=lim;i++)
11         ans+=dfs(dep-1,rest-i*(1<<(dep-1)),flag&(i==lim));
12     if(!flag)dp[dep][rest]=ans;
13     return ans;
14 }
15 int solve(int A,int B){
16     int dd=0;
17     while(A)dig[++dd]=A%10,A/=10;
18     for(int i=dd;i;i--)
19         A=A*2+dig[i];
20     dd=0;
21     while(B)dig[++dd]=B%10,B/=10;
22     return dfs(dd,A,1);
23 }
24 int main(){
25     int T,Case=0;
26     scanf("%d",&T);
27     memset(dp,-1,sizeof(dp));
28     while(T--){
29         int A,B;
30         scanf("%d%d",&A,&B);
31         printf("Case #%d: %d\\n",++Case,solve(A,B));
32     }
33     return 0;
34 }
View Code

 

以上是关于[HDU 4734] F(x)的主要内容,如果未能解决你的问题,请参考以下文章

HDU 4734 F(x) (数位DP)

hdu4734 F(x)

[HDU 4734] F(x)

HDU - 4734 - F(x) (数位DP)

hdu4734 F(x)

hdu 4734 F(x) 数位DP