hdu 4722 Good Numbers(找规律)

来源:互联网 发布:淘宝单坑产出什么意思 编辑:程序博客网 时间:2024/06/03 23:41
Good Numbers


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.
 

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.
 


ps:找规律中的大水题,可是我忘记了0也能整除10,以至于三个小时找了一个错误的规律~Orz

数位dp也可以做,暂时还没学0.0

代码:
#include<stdio.h>#include<string.h>#include<algorithm>#include<math.h>#include<stdlib.h>using namespace std;#define LL long long intLL solve(LL x){    LL sum=x/10;    LL first=x/10*10;    for(LL i=first; i<=x; i++)    {        LL m=0,k=i;;        while(k)        {            m+=(k%10);            k/=10;        }        if((m%10)==0)            return sum+1;    }    return sum;}int main(){    LL t,k=0;    scanf("%lld",&t);    while(k<t)    {        LL le,ri;        scanf("%lld%lld",&le,&ri);        le--;        LL sum1=solve(le);        if(le<0)            sum1=0;        LL sum2=solve(ri);        LL ans=abs(sum2-sum1);        printf("Case #%lld: ",++k);        printf("%lld\n",ans);    }    return 0;}


总结:对于极限数据的把握还不够,比赛的时候心态也不好,竟然把0能整除10给忘了,下次如果一道题错5次以上并且能确定思路正确的话,一定要多出几组数据区间的下限和上限数据,不能再犯同样的错误了敲打
1 0