hud 4722 Good Numbers(数位 DP)
来源:互联网 发布:网络推广软件代理 编辑:程序博客网 时间:2024/06/14 00:06
Problem Description
If we sum up every digit of a number and the result can be exactly divided by 10, we say this number is a good number.
You are required to count the number of good numbers in the range from A to B, inclusive.
You are required to count the number of good numbers in the range from A to B, inclusive.
Input
The first line has a number T (T <= 10000) , indicating the number of test cases.
Each test case comes with a single line with two numbers A and B (0 <= A <= B <= 1018).
Each test case comes with a single line with two numbers A and B (0 <= A <= B <= 1018).
Output
For test case X, output "Case #X: " first, then output the number of good numbers in a single line.
Sample Input
21 101 20
Sample Output
Case #1: 0Case #2: 1HintThe answer maybe very large, we recommend you to use long long instead of int.
#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;#define LL long longLL digit[30];LL dp[30][30]; //位数为i时,和为j时满足条件的个数LL dfs(LL pos, LL pre, bool doing){ if(pos == -1) return pre == 0; if(!doing && dp[pos][pre]!=-1) return dp[pos][pre]; LL ans = 0, npre; LL end = doing ? digit[pos] : 9;//doing 是否为真为真end=digit[pos] for(LL i = 0 ; i <= end ; i ++) { npre = (pre + i) % 10; ans += dfs(pos - 1, npre, doing && (i == end)); } if(!doing) dp[pos][pre] = ans; return ans;}LL calc(LL x){ LL pos = 0; memset(dp, -1,sizeof(dp)); while(x) { digit[pos ++]= x % 10; x /= 10; } return dfs(pos - 1, 0, 1);//pos是位数,}LL a,b,ans;int main(){ int T; scanf("%d",&T); for(int ncase = 1; ncase <= T; ncase++) { scanf("%I64d %I64d",&a,&b); ans = calc(b) - calc(a - 1); printf("Case #%d: %I64d\n",ncase,ans); } return 0;}
0 0
- hud 4722 Good Numbers(数位 DP)
- Good Numbers (数位DP)
- HDOJ 4722 - Good Numbers 数位dp
- hdu 4722 Good Numbers 数位dp
- 【数位DP】 HDU 4722 Good Numbers
- hdu 4722 Good Numbers 数位dp
- HDU 4722 Good Numbers (数位dp)
- [数位dp] hdu 4722 Good Numbers
- hdu 4722 Good Numbers(数位dp)
- hdu 4722 Good numbers(数位DP)
- HDOJ 4722Good Numbers 数位DP
- HDU 4722-Good Numbers-数位dp
- 【HDU 4722】Good Numbers(数位dp)
- HDU 4722 Good Numbers(数位DP)
- HDU 4722 Good Numbers(数位DP)
- HDU 4722Good Numbers(数位dp)
- HDU4722:Good Numbers(数位DP)
- hdu4722 Good Numbers (数位DP)
- SAP(abap) 常用TCode整理
- gile可以加载处圆角或圆形头像
- OKHttp进行Https认证
- Android设置屏幕亮度的两种方式
- android6.0以上特殊权限
- hud 4722 Good Numbers(数位 DP)
- android学习笔记之Task and back stack
- aidl简单的使用步骤
- 秒解!友盟多渠道批量打包+Bugly运营模块获取渠道功能流程详解
- Java中的关键字volitile
- 【易康eCognition】面向对象的图像分类学习
- 为什么子类不能访问基类的private成员?为什么要这样设计?
- Android之FragmentTransaction与Fragment生命周期的关系
- 列表