四川省ACM竞赛(2013)---G-Good Numbers(规律/可DP)

来源:互联网 发布:2017淘宝销售排行 编辑:程序博客网 时间:2024/05/23 01:59
G - Good Numbers
Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u
SubmitStatusPracticeHDU 4722

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 <= 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: 1

Hint

 The answer maybe very large, we recommend you to use long long instead of int.          
 


AC CODE:
#include <iostream>#include <cstdio>using namespace std;long long cu(long long n){    if(n<0) return 0;    if(n<=10)   return 1;    int s,more=0;    long long i=n/10*10;    long long m = n;    for(; i<=n; i++)    {        m=i;        s=0;        while(m)        {            s+=m%10;            m/=10;        }        if(s%10==0)more++;    }    return n/10+more;}int main(){    long long a,b;    int cas=1;    int T;    cin>>T;    while(T--)    {        cin>>a>>b;        printf("Case #%d: ",cas++);        cout<<cu(b)-cu(a-1)<<endl;    }    return 0;}


0 0