hdu 4722 Good Numbers(规律题)
2013-09-11 20:08
239 查看
http://acm.hdu.edu.cn/showproblem.php?pid=4722
【题意】:
找GoodNumbers一个数N,如果它每一个位数字之和可以整除10,那么它就是GoodNumbers,比如451就是一个4+5+1=10,求[A,B]之间这样的数的个数
【题解】:
先写一个暴力代码用来找规律
发现: 0-10 1
0-100 10
0-1000 100
0-990 99
0-992 100
0-997 100
基本规律为 n/10 + (1或0)
加1的情况为:n/10*10 到 n 有满足条件的 比如:997: 99 + (990到997是否有满足条件的,如果有则加1)
【code】:
【题意】:
找GoodNumbers一个数N,如果它每一个位数字之和可以整除10,那么它就是GoodNumbers,比如451就是一个4+5+1=10,求[A,B]之间这样的数的个数
【题解】:
先写一个暴力代码用来找规律
发现: 0-10 1
0-100 10
0-1000 100
0-990 99
0-992 100
0-997 100
基本规律为 n/10 + (1或0)
加1的情况为:n/10*10 到 n 有满足条件的 比如:997: 99 + (990到997是否有满足条件的,如果有则加1)
【code】:
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; int isOne(__int64 n) //例如:456计算450-456有没有符合条件的数 { int s=0; __int64 i=n/10*10; __int64 m = n; for(;i<=m;i++) { n=i; s=0; while(n) { s+=n%10; n/=10; } if(s%10==0) return 1; } return 0; } __int64 getNum(__int64 n) { if(n<0) return 0; if(n<=10) return 1; return n/10+isOne(n); } int main() { int t,cas=1; scanf("%d",&t); while(t--) { __int64 a,b; scanf("%I64d%I64d",&a,&b); printf("Case #%d: %I64d\n",cas++,getNum(b)-getNum(a-1)); } return 0; }
相关文章推荐
- hdu 4722 Good Numbers(找规律,记忆化搜索,数位dp)
- HDU 4722 Good Numbers(找规律)
- hdu 4722 Good Numbers(规律题)
- HDU 4722 Good Numbers(找规律)
- HDU 4722 Good Numbers 数位dp或找规律枚举 数位dp感悟
- HDU-4722-Good Numbers(找规律)
- HDU 4722 Good Numbers (数位dp)
- HDU 4722 规律
- Hdu 4722 Good Numbers
- hdu 4722 Good Numbers(dp)
- hdu 4722 Good Numbers(数位dp)
- hdu 4722 Good Numbers
- HDU 4722 Good Numbers
- 【HDU 4722】Good Numbers
- HDU4722——Good Numbers——2013 ACM/ICPC Asia Regional Online —— Warmup2
- HDU 4722 Good Numbers(数位DP)
- hdu 4722 Good Numbers
- HDU 4722 Good Numbers
- hdu 4722 Good numbers(数位DP)
- HDU 4722-Good Numbers-数位dp