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

G - Good Numbers
Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u

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.
 

Sample Input

     
     
2 1 10 1 20
 

Sample Output

     
     
Case #1: 0 Case #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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值