HDU 4722 Good Numbers 2013年四川省赛题

时间:2023-03-09 03:59:27
HDU 4722	Good Numbers  2013年四川省赛题

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722

题目大意:给定一个区间,求区间中有多少个满足每位上的数的和是10的倍数。

解题思路:先打表暴力求出前200项符合条件的个数,然后再找规律。

0~9    0    1个

10~19  9   1个

20~-29  18  1个

0~100         10个

0~200         20个

基本规律:r/10-(l-1)/10;只需要找两端点是否在范围内即可

#include<cstdio>
#include <iostream>
using namespace std;
long long is(long long x)
{
long long k,l,r,ans;
l=x/*;
r=(x/+)*;//cout<<"l="<<l<<",r="<<r<<endl;
for(long long i=l;i<r;i++)
{
k=i;ans=;
while(k!=)
{
ans+=k%;
k/=;
//cout<<"k="<<k<<",ans="<<ans<<endl;
}
if(ans%==) {return i;}
}
}
int main()
{
int t;
scanf("%d",&t);
for(int ca=;ca<=t;ca++)
{
long long a,b,sum;
cin>>a>>b;
long long l=(a-)/,r=(b)/;
sum=r-l;
if(is(a-)<=(a-)) sum-=;
if(is(b)<=b) sum+=;
//if(a!=0) sum-=1;
printf("Case #%d: %lld\n",ca,sum);
}
return ;
}