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.
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).
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.
题意:求a到b之间一个数各位数相加能被10整除的数的个数
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
long long cal(long long n){
if(n<0)return 0;
if(n<=10)return 1;
long long temp=n/10*10;
for(long long i=temp;i<=n;++i){
long long m=i;int sum=0;
while(m){
sum+=m%10;
m/=10;
}
if(sum%10==0){
return n/10+1;
}
}
return n/10;
}
int main()
{
int t,k=1;
long long n,a,b;
scanf("%d",&t);
while(t--){
scanf("%lld%lld",&a,&b);
printf("Case #%d: %lld\n",k++,cal(b)-cal(a-1));
}
return 0;
}