HDU 4734F(x) 数位 dp
来源:互联网 发布:而知也无涯作者是谁 编辑:程序博客网 时间:2024/05/22 04:58
H - F(x)
Time Limit:500MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uAppoint description:
Description
For a decimal number x with n digits (A nA n-1A n-2 ... A 2A 1), we define its weight as F(x) = A n * 2 n-1 + A n-1 * 2 n-2 + ... + A 2 * 2 + A 1 * 1. Now you are given two numbers A and B, please calculate how many numbers are there between 0 and B, inclusive, whose weight is no more than F(A).
Input
The first line has a number T (T <= 10000) , indicating the number of test cases.
For each test case, there are two numbers A and B (0 <= A,B < 10 9)
For each test case, there are two numbers A and B (0 <= A,B < 10 9)
Output
For every case,you should output "Case #t: " at first, without quotes. The t is the case number starting from 1. Then output the answer.
Sample Input
30 1001 105 100
Sample Output
Case #1: 1Case #2: 2Case #3: 13
ACcode:
#include <cstdio>#include <iostream>#include <cstring>using namespace std;int dp[11][10000];int data[11];int cnt=1;int k;int dfs(int len,int sum,int limit){ if(!len)return sum>=0; if(sum<0)return 0; if(!limit&&dp[len][sum]!=-1)return dp[len][sum]; int ed=limit?data[len]:9; int ans=0; for(int i=0;i<=ed;++i) ans+=dfs(len-1,sum-i*(1<<(len-1)),limit&&i==ed); return limit?ans:dp[len][sum]=ans;}void doit(){ int a,b; scanf("%d%d",&a,&b); int len=0; k=0; while(a){ k+=(a%10)*(1<<len); a/=10; len++; } len=0; while(b){ data[++len]=b%10; b/=10; } printf("Case #%d: %d\n",cnt++,dfs(len,k,1));}int main(){ int loop;memset(dp,-1,sizeof(dp)); scanf("%d",&loop); while(loop--)doit(); return 0;}/*21231 2323 43543 454231 2312100 2332 4212312 1223122 444*/
0 0
- [HDU 4734]F(x)[数位DP]
- hdu 4734 F(x)(数位DP)
- 简单数位dp-hdu-4734-F(x)
- 【数位DP】 HDU 4734 F(x)
- hdu-4734-F(x)--数位dp
- hdu 4734 F(x) --- 数位dp
- hdu 4734 F(x) (数位dp)
- [数位dp] hdu 4734 F(x)
- hdu 4734 F(x)(数位dp)
- 【HDU】4734 F(x) 数位DP
- HDU 4734 F(x)(数位DP)
- HDU 4734 F(x) (数位DP)
- hdu 4734 F(x) 数位dp
- 【数位DP】 HDU 4734 F(x)
- HDU 4734 F(x)(数位DP)
- HDU 4734 F(X) 数位DP
- Hdu 4734 F(x) (数位dp)
- HDU 4734 F(x) (数位DP)
- Final变量 编译时期就确定具体值
- Service基础和利用Service进行跨进程通信
- Java ConcurrentModificationException异常原因和解决方法
- 今天在群里看到一道面试题,做了两种解法
- button的OnClickListener的三种实现方法
- HDU 4734F(x) 数位 dp
- java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log 造成的原因和解决方法
- Android开发必备技能之:Android中图片的三级缓存实现
- java之代理设计模式
- HashMap排序题
- springmvc在业务控制方法中收集List<JavaBean>参数,实现批量处理
- 自己看看
- 如何屏蔽百度搜索推广
- SpringMVC简单配置--HelloWorld例子