hdoj4722Good Numbers【找规律】
2015-10-31 23:24
330 查看
G - Good Numbers
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status Practice HDU
4722
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
题意:求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;
}
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status Practice HDU
4722
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.
题意:求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;
}
相关文章推荐
- Linux 中seq 命令的用法
- LeetCode 2: Add Two Numbers (JAVA)
- 学习
- 学习
- Mathematician gucci shoes
- MB Star Astrology comprises of Star Sign
- c#大数运算
- POINTERS ON C 读书日记
- 摘抄---2005-1-1
- Epub 转 txt
- Yet Another Sudoku Solver in Python
- 软件项目版本号的命名格式
- Microsoft 认证 MB7-839最新考试题库下载
- The 3n+1 Problem(求各位高手修改)
- 动态内存分配 (转载)
- hdu 4279 Number
- zapata.conf配置参数说明
- Intro:Repeating Actions with Loops
- Intro:More about loops work
- Intro:Formatting Numbers