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.
 

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 <= 10 18).
 

Output

For test case X, output "Case #X: " first, then output the number of good numbers in a single line.

题目大意:求a~b中,位上所有数字加起来能整除10的数有多少个。

思路:位数DP。dp[i][j][k]表示第i位小于j,除以10余k的数的个数,j=10只是为了i+1的j=1准备的……第一次写这个写得有点挫啊……

PS:有数学方法但是我不会,我只知道接近于对于0~n接近于n/10……

代码(109MS):

 #include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL; const int MAXN = ; LL dp[MAXN][MAXN][MAXN];
//i位,字头小于j,和为k的数一共有多少个
LL a, b;
int T; void init() {
dp[][][] = ;
for(int i = ; i <= ; ++i) {
for(int k = ; k <= ; ++k) dp[i][][k] = dp[i - ][][k];
for(int j = ; j <= ; ++j) {
for(int k = ; k <= ; ++k)
dp[i][j][k] = dp[i][][(k + - (j - )) % ] + dp[i][j - ][k];
}
}
} int t[MAXN]; LL calculate(LL n) {
int cnt = ;
while(n) t[++cnt] = n % , n /= ;
int sum = ;
LL ret = ;
for(int i = cnt; i > ; --i) {
ret += dp[i][t[i]][( - sum) % ];
sum = (sum + t[i]) % ;
}
return ret;
} int main() {
ios::sync_with_stdio(false);
cin>>T;
init();
for(int t = ; t <= T; ++t) {
cin>>a>>b;
cout<<"Case #"<<t<<": "<<calculate(b + ) - calculate(a)<<endl;
}
}

HDU 4722 Good Numbers(位数DP)(2013 ACM/ICPC Asia Regional Online ―― Warmup2)的更多相关文章

  1. 2013 ACM/ICPC Asia Regional Online —— Warmup2

    HDU 4716 A Computer Graphics Problem 水题.略 HDU 4717 The Moving Points 题目:给出n个点的起始位置以及速度矢量,问任意一个时刻使得最远 ...

  2. HDU 4719 Oh My Holy FFF(DP+线段树)(2013 ACM/ICPC Asia Regional Online ―― Warmup2)

    Description N soldiers from the famous "*FFF* army" is standing in a line, from left to ri ...

  3. HDU4722——Good Numbers——2013 ACM/ICPC Asia Regional Online —— Warmup2

    今天比赛做得一个数位dp. 首先声明这个题目在数位dp中间绝对是赤裸裸的水题.毫无技巧可言. 题目的意思是个你a和b,要求出在a和b中间有多少个数满足数位上各个数字的和为10的倍数. 显然定义一个二维 ...

  4. HDU 4717 The Moving Points(三分法)(2013 ACM/ICPC Asia Regional Online ―― Warmup2)

    Description There are N points in total. Every point moves in certain direction and certain speed. W ...

  5. HDU 4725 The Shortest Path in Nya Graph(最短路径)(2013 ACM/ICPC Asia Regional Online ―― Warmup2)

    Description This is a very easy problem, your task is just calculate el camino mas corto en un grafi ...

  6. 2013 ACM/ICPC Asia Regional Online —— Warmup2 ABEGKL

    HDU4716 A. A Computer Graphics Problem A题目描述 题意:输出手机剩余电量,保证给出的数是10的倍数. 题解:水题,按题意输出即可. 代码: #include & ...

  7. HDU4726——Kia's Calculation——2013 ACM/ICPC Asia Regional Online —— Warmup2

    题目的意思是给你两个数字(多达10^6位) 做加法,但是有一点,没有进位(进位不算,相当于这一位相加后对10取模) 你可以任意排列两个数字中的每一位,但是不能是0开头. 现在题目要求以这种不进位的算法 ...

  8. hduoj 4710 Balls Rearrangement 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4710 Balls Rearrangement Time Limit: 6000/3000 MS (Java/Ot ...

  9. hduoj 4708 Rotation Lock Puzzle 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4708 Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/O ...

随机推荐

  1. o'Reill的SVG精髓(第二版)学习笔记——第三章

    第三章:坐标系统 3.1视口 文档打算使用的画布区域称作视口.我们可以在<svg>元素上使用width和height属性确定视口的大小.属性的值可以是一个数字,该数字会被当作用户坐标下的像 ...

  2. web 切换多语言版本

    1.Google 翻译 <div id="google_translate_element"></div> <script type="te ...

  3. JDBC连接数据库时错误提示的解决方案汇总

    今天在连接JDBC时,出现了错误 最开始的URL是这样写的 Connection conn = DriverManager.getConnection("jdbc:mysql://local ...

  4. Oracle闪回恢复误删除的表、存储过程、包、函数...

    在日常的数据库开发过程汇总难免会出现一些误删除的动作, 对于一些误删的操作我们可以通过oracle提供的闪回机制恢复误删数据, 从而避免出现较大的生产事故. 下面是本人平时工作中积累的一些常用的操作, ...

  5. Percona-Tookit工具包之pt-table-checksum

      Preface       The master-slave replication is commonly used in our product evironment.On account o ...

  6. vue js 保留小数

    toFixed(number,fractionDigits ){ //number 保留小数数 //fractionDigits 保留小数位数 var times = Math.pow(10, fra ...

  7. 重新格式化hadoop的namenode导致datanode无法启动的最简单解决办法

    一般namenode只格式化一次,重新格式化不仅会导致之前的数据都不可用,而且datanode也会无法启动.在datanode日志中会有类似如下的报错信息: java.io.IOException: ...

  8. bootstrap-daterangepicker插件运用

    引入:daterangepicker.css.daterangepicker.js.moment.js.moment.min.js 链接:https://files.cnblogs.com/files ...

  9. 迷你MyBank

    该迷你MyBank,存贮是用对象数组来存贮的,所以比较简单,容易理解,适合新手.. 一.创建chengyuan类,在其中声明所需的成员变量: public class chengyuan { //该类 ...

  10. js面试之一个字符串中出现次数最多的字符是?出现几次?

    最近在找面试题的时候发现了许多有趣的题目,在这里用随笔记录下~ 关于“一个字符串中出现次数最多的字符...”这种问题在笔试题中出现的频率还是很高的,我自己也找到了几种方法处理 var str = &q ...