1009 数字1的数量 分类: 51nod 2015-07-20 21:44 3人阅读 评
来源:互联网 发布:php开发网站兼容问题 编辑:程序博客网 时间:2024/06/11 21:06
给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。
例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。
Input
输入N(1 <= N <= 10^9)
Output
输出包含1的个数
Input示例
12
Output示例
5
这个用普通的暴力是肯定会超时,所以要找规律,规律在这个博客上http://www.cnblogs.com/jy02414216/archive/2011/03/09/1977724.html
那里介绍了三种方法,而我用的是第二种方法
代码如下
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<math.h> using namespace std;__int64 get_ans(int n){ __int64 count=0; if(n==0) { count=0; } else if(n>1&&n<10) { count=1; } else { int high=n; int bit=0; while(high>=10) { high=high/10; bit++; } int weight=pow(10,bit); if(high==1) { count+=get_ans(weight-1)+get_ans(n-weight)+n-weight+1; } else { count+=high*(get_ans(weight-1))+get_ans(n-high*weight)+weight; } } return count;}int main(){ int n; scanf("%d",&n); printf("%lld",get_ans(n)); return 0;}
版权声明:本文为博主原创文章,未经博主允许不得转载。
0 0
- 1009 数字1的数量 分类: 51nod 2015-07-20 21:44 3人阅读 评
- 51nod 1009:数字1的数量
- 51NOD 1009 数字1的数量
- 51nod 1009 数字1的数量
- 51nod 1009 数字1的数量
- 51 nod 1009 数字1的数量
- 51nod-【1009 数字1的数量】
- 51nod 1009 数字1的数量
- 51nod-1009 数字1的数量
- 51nod 1009 数字1的数量
- 51nod 1009 数字1的数量
- 51NOD 1009 数字1的数量
- 51nod 1009 数字1的数量
- 51nod 1009 数字1的数量
- 51nod 1009 数字1的数量
- 51Nod 1009 数字1的数量
- 51nod 1009 数字1的数量
- 51Nod 1009 数字1的数量
- leetcode--N-Queens
- C#实现自动升级(附源码)
- 51nod 1091 线段的重叠 分类: 51nod 2015-07-18 21:49 7人阅读
- 1087 1 10 100 1000 分类: 51nod 2015-07-18 21:59 6人
- 1284 2 3 5 7的倍数 分类: 51nod 2015-07-18 22:06 6人阅读
- 1009 数字1的数量 分类: 51nod 2015-07-20 21:44 3人阅读 评
- VC6.0工程升级到VS2010遇到问题及解决办法 【LNK2019】 无法解析的外部符号 __iob
- 1083 矩阵取数问题 分类: 51nod 2015-07-20 22:05 9人阅读 评
- 1088 最长回文子串 分类: 51nod 2015-07-20 22:09 8人阅读 评
- 1066 Bash游戏 分类: 51nod 2015-07-20 22:15 5人阅读 评
- 1080 两个数的平方和 分类: 51nod 2015-07-20 22:20 11人阅读
- 二叉树的遍历 分类: 数据结构 2015-07-20 22:34 4人阅读 评论(0)
- Buildings 分类: ACM 多校 2015-07-23 22:09
- Delicious Apples(多校联合训练) 分类: ACM 多校 201