求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了,logn的算法复杂度
2017-05-05 12:08
751 查看
include "stdafx.h"
#include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; class Solution { public: int NumberOf1Between1AndN_Solution(int n) { int current= n % 10 ; int round = n / 10 ; int former=0; int num = 0; int base = 1; while (round!=0) { switch (current) { case 0: num += round*base; break; case 1: num += round*base + 1 + former; break; default: num += round*base + base; break; } former = current*base+former; base = base * 10; n = n / 10; current = n % 10; round= n /10; } //当round==0时, switch (current) { case 0: num += round*base; break; case 1: num += round*base + 1 + former; break; default: num += round*base + base; break; } return num; } }; int main() { Solution so; cout << so.NumberOf1Between1AndN_Solution(21345) << endl; }
相关文章推荐
- 25.求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。AC
- 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。
- 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。
- 输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。
- 对于给定的一个字符串,统计其中数字字符出现的次数。输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
- 有一个整数n,写一个函数f(n),返回0~n之间出现的“1”的个数,例如f(1)=1; f(13)=6(1,10,11,12,13一共6个1),最大的f(n)=n的n是多少
- 编写程序,生成包含1000个0到100之间的随机整数,并统计每个元素的出现次数
- 输出1-100的整数中数字9出现的次数
- 从1到n整数中1出现的次数:O(logn)算法
- java 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,
- 随机产生50个整数,位于[10,50],统计每个数字出现的次数以及出现次数最多的数字与出现次数并打印.如果出现次数为0不打印,打印时要求升序
- 1到100的整数中出现数字9的次数
- 从1到n整数中1出现的次数:O(logn)算法
- 从1到n整数中1出现的次数:O(logn)算法
- |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20所有这些字符串,把它的数字一个个剥离??
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8
- 微软等数据结构+算法面试100题(23)--数组中超过出现次数超过一半的数字
- 现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数
- LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面
- 现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数