标签:git bsp scan multi spec 数位dp call must tor
InputThe input contains multiple test cases. The first line is the total number of cases T (0 < T ≤ 30). For each case, there are two integers separated by a space in a line, x and y. (0 ≤ x ≤ y ≤ 10 18).OutputFor each case, print the number of balanced numbers in the range [x, y] in a line.Sample Input
2 0 9 7604 24324
Sample Output
10 897
1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 using namespace std; 5 typedef long long LL; 6 int bit[25]; 7 LL dp[20][20][2010], n, m; 8 9 LL dfs(int pos, int d, int sum, int limit) { 10 if (pos <= 0) return (sum == 0); 11 if (sum < 0) return 0; 12 if ( !limit && dp[pos][d][sum] != -1 ) return dp[pos][d][sum]; 13 LL ans = 0; 14 int num = limit ? bit[pos] : 9; 15 for (int i = 0 ; i <= num ; i++) 16 ans += dfs(pos - 1, d, sum + i * (pos - d), limit && i == num ) ; 17 if (!limit) dp[pos][d][sum] = ans; 18 return ans; 19 } 20 LL solve(LL x) { 21 int len = 0; 22 while(x) { 23 bit[++len] = x % 10; 24 x /= 10; 25 } 26 LL ret = 0; 27 for (int i = 1 ; i <= len ; i++) 28 ret += dfs(len, i, 0, 1); 29 return ret - len + 1; 30 } 31 int main() { 32 int t; 33 scanf("%d", &t); 34 memset(dp, -1, sizeof(dp)); 35 while(t--) { 36 scanf("%lld%lld", &n, &m); 37 printf("%lld\n", solve(m) - solve(n - 1)); 38 } 39 return 0; 40 }
HDU 3709 Balanced Number (数位DP)
标签:git bsp scan multi spec 数位dp call must tor
原文地址:https://www.cnblogs.com/qldabiaoge/p/9345752.html