求1~n直接1出现的次数
参考前人的统计思想:分别统计个、十、百、、、亿等第N位上1出现的次数。
如ABCDE,在统计D位1出现的次数时,用D做分割符,ABC为Before,E为After。
分情况考虑:(n为D的length-1)
当D = 0 时,count = Before * 10^n ;
当D = 1 时,count = Before * 10^n + After;
当D > 1 时,count = (Before + 1)*10^n;
例如:
19X8
统计X上1的次数:
1)X = 0 ,即1908 X为1的数有001x~181x,x取0~9则19为Before,8为After
此时count = 19 * 10^1 ;
2)X = 1 ,即1918 X为1的数有001x~181x,x取0~9;另外,1910~1918,则19为Before,8为After
此时count = 19 * 10^1 + (8 + 1);
3)X > 1 ,如1928 X为1的数有001x~191x,x取0~9则19为Before,8为After
此时count = (19 + 1) * 10^1 ;
特别当X在最左端时Before 为 0,最右端时After 为0
#include <stdio.h> int Count1(int n)
{
int count = ,//1出现总次数
bitCount = ,//某位1出现次数
base = ,//基数
before = n,after = , //从最右开始,则Before = n,After = 0
bitN = ;//第N位数
while(before)//向左移,还有数时循环
{
after = n % base;
before = n / (base * );
bitN = (n / base) % ;
if(bitN > )
{
bitCount = (before + ) * base;
}
else if(bitN == )
{
bitCount = (before) * base;
}
else
{
bitCount = (before) * base + (after + );
}
base *= ;
count += bitCount;
}
return count;
} int main() {
int n = ;
printf("%d\n",Count1(n));
return ;
}
求1~n直接1出现的次数的更多相关文章
- Hash——字符串匹配(求s1在s2中出现的次数)
题目描述: 这是一道模板题. 给定一个字符串 A 和一个字符串 B ,求 B 在 A 中的出现次数.A 和 B中的字符均为英语大写字母. 求A 在 B 中出现了几次.(可重叠) 样例输入: 3 BA ...
- hiho#1449 重复旋律6 求长度为k的串最大次数 后缀自动机
题目传送门 题目大意:求长度为k的串的最大次数,把k从1到length的所有答案全部输出. 思路: 这道题放在$SAM$里就是求长度$k$对应的所有$right$集中最大的大小. 我们以$aabab$ ...
- KMP模版 && KMP求子串在主串出现的次数模版
求取出现的次数 : #include<bits/stdc++.h> ; char mo[maxn], str[maxn];///mo为模式串.str为主串 int next[maxn]; ...
- 3676: [Apio2014]回文串 求回文串长度与出现次数的最大值
「BZOJ3676」[Apio2014] 回文串 Description 考虑一个只包含小写拉丁字母的字符串s.我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度.请你求出s的所 ...
- poj 1363 Rails in PopPush City &&【求堆栈中合法出栈顺序次数】
问题如下: 问题 B: Rails 时间限制: Sec 内存限制: MB 提交: 解决: [提交][状态][讨论版] 题目描述 There is a famous railway station in ...
- JAVA常见算法题(三十三)---求子串在字符串中出现的次数
计算某字符串中子串出现的次数. public static void main(String[] args) { String s1 = "adcdcjncdfbcdcdcd"; ...
- Codeforces-914F Substrings in a String (Bitset求T串中S串出现次数)
之前有过区域赛,简化版问题: 给定一个小写字符组成的字符串S,(|S|<1e5,下标从1开始),现在有Q种操作,对于每个操作Q(Q<=1e5),输入opt, 如果opt==1,输入x,c, ...
- hdoj 4552 怪盗基德的挑战书【求前缀在字符串中出现的次数之和】
怪盗基德的挑战书 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Su ...
- 任意输入一串字符串,求该字符串中字符的出现次数并打印出来,如输入“bcaba”输出:b 2 c 1 a 2
前言:其实我还是有点不懂,有点郁闷了,算了直接把代码放上去把. 方法一: Scanner input=new Scanner(System.in); System.out.println(" ...
随机推荐
- poj2121--暴力解法
#include<iostream> #include<string> using namespace std; ]={"negative","z ...
- 定时器——Cocos2d-x学习历程(十一)
1.定时器 利用场景.层和精灵等游戏元素,我们可以构建游戏的框架,但是此时的游戏仍然是静止不动的.在一切游戏中,游戏的状态都会随着时间的流逝而改变,同时我们还需要定时进行一些逻辑判断,例如鱼和子弹的碰 ...
- python3.5之mysql扩展
最近在学习廖雪峰的python3的教程,这是官方http://www.liaoxuefeng.com/,建议大家想学习python的同学可以去看看,真的是在网上能找到的最好文本教程,没有之一 在廖老实 ...
- Python你必须知道的十个库
Python是优雅的,使用这些库可以使你的代码更简洁,并保持持久性.欢迎各位补充,并提出意见! Docopt.抛弃optparse和argparse吧,使用docstrings来构建优雅的,可读性强的 ...
- jquery学习(3)--高级选择器
自己手写的学习笔记.常规选择器: /****************学习--高级选择器(1)****************/---高级选择器:ie7+ 层次选择器: 后代选择器 ul li ...
- codeforces 645 D. Robot Rapping Results Report 二分+拓扑排序
题目链接 我们可以发现, 这是一个很明显的二分+拓扑排序.... 如何判断根据当前的点, 是否能构造出来一个唯一的拓扑序列呢. 如果有的点没有出现, 那么一定不满足. 如果在加进队列的时候, 同时加了 ...
- OpenCV学习 1:OpenCV安装与第一个图像显示程序
原创作品,转载请注明出处 为了提升逼格,决定学下OpenCV,想想如果可以做人脸识别,定点降落,让飞机跟着自己飞..想想都有点小激动.这只是想的,能不能学会还不知道..哈.. 1:先下载:h ...
- MVC入门
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C 则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据可以分别用柱状图.饼图 ...
- Python中进行Base64编码和解码
Base64编码 广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符.优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容 ...
- linux关闭防火墙方法
在关闭防火墙之前需要查看防火墙的状态,可以使用service iptables status命令来查看,确定防火墙是否开启再来进行关闭操作. 如果想临时开启防火墙使用命令service iptable ...