hdu 4722 Good Numbers(规律题)
2016-03-20 17:25
387 查看
【题意】:
找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)
找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)
#include <cstdio> #include <iostream> #include <cstring> #include <string> #include <cstdlib> #include <algorithm> #include <cmath> #include <vector> #include <set> #include <list> #include <queue> #include <map> #include <stack> using namespace std; #define L(i) i<<1 #define R(i) i<<1|1 #define INF 0x3f3f3f3f #define pi acos(-1.0) #define eps 1e-3 #define maxn 100010 #define MOD 1000000007 long long n,m; long long slove(long long x) { if(x < 0) return 0; long long k = x / 10; for(long long i = k * 10; i <= x; i++) { int p = 0; long long l = i; for(int j = 0; j < 19; j++) { p += l % 10; l /= 10; } if(p % 10 == 0) k++; } return k; } int main() { int t,C = 1; scanf("%d",&t); while(t--) { scanf("%lld%lld",&n,&m); printf("Case #%d: %lld\n",C++,slove(m)-slove(n-1)); } return 0; }
相关文章推荐
- GO语言入门到精通(一)Golang环境搭建
- 【GOF23设计模式】--工厂模式
- go语言cgo -- C与Go互调
- 高仿GooglePlay(一)
- 【GOF23设计模式】--单例模式
- __init__() got an unexpected keyword argument 'context processor'解决方法
- goldsystem
- Django rest framework 常用外键命令 (加入、删除、查看所有、查看除了自己以外的所有、摘除分离对象间外键关系)
- Category(类别)和扩展(Extension)的区别
- 后缀树系列一:概念以及实现原理( the Ukkonen algorithm)
- GO1.6语言学习笔记3-工具篇(SublimeText 3+GoSublime组合)
- 编写GO的WEB开发框架 (十四): daemon和greaceful
- Mongoose 学习
- LightOJ1030 Discovering Gold(概率DP)
- CF 653E(Bear and Forgotten Tree 2-链表优化搜索)
- GDCPC GO
- Django 模型
- 商业书籍精华摘要《专注》丹尼尔·戈尔曼 Focus by Daniel·Goleman
- 命令行调试Django的Template功能时碰到的问题及解决方案
- codeforces-Good Bye 2015-New Year and Domino