hdu4722 Good Numbers

题意:定义x为good number,如果x的各个数位之和能被10整除。求[A,B]区间goodnumber的个数

分析:一看范围这么大,肯定是数位DP,为什么大家过的这么快呢,然后灿哥找到了规律,但是不完全的,还要修改,但是他们已经用数位Dp过了。所以我就不管了,比赛结束之后把找规律的改了改就过了

int judge(LL n)
{
    int sum = 0;
    while(n)
    {
        sum += n%10;
        n/=10;
    }
    return sum ;
}
LL get(LL x)
{
  if(x < 0 ) return 0 ;
  if(x == 0 ) return 1 ;
  LL res ;
  res = x / 10 ;
  LL sum ,last;
  sum = judge(x) % 10  ;
  sum = 10 - sum ;
  last = x % 10 ;
  if(last + sum >= 10  ) res ++ ;
  return res;
}
int main()
{
    int t,cse = 1;
    scanf("%d",&t);
    while(t--)
    {
        LL m,n;
       // scanf("%I64d",&n);
        scanf("%I64d%I64d",&m,&n);

        LL ans = get(n)- get(m - 1 );

        printf("Case #%d: %I64d\n",cse++,ans);
    }
    return 0;
}
View Code

 

posted on 2013-09-11 20:47  oshixiaoxiliu  阅读(174)  评论(0编辑  收藏  举报

导航