1的个数 南阳acm514
1的个数
- 描述
-
给你两个数a和b,你的任务是计算出1在a和b之间出现的次数,比如说,如果a=1024,b=1032,那么a和b之间的数就是:1024 1025 1026 1027 1028 1029 1030 1031 1032则有10个1出现在这些数中。
- 输入
- 输入不会超过500行。每一行有两个数a和b,a和b的范围是0 <= a, b <= 100000000。输入两个0时程序结束,两个0不作为输入样例。
- 输出
- 对于每一对输入的a和b,输出一个数,代表1出现的个数。
- 样例输入
-
1 10
44 497
346 542
0 0 - 样例输出
-
2
185
40 - 来源
- heroj
- 上传者
- rihkddd
- 算法思想:首先,a不一定比b小,要判断一下,如果我们直接暴力从a到b每个值都判断肯定是会超时的,因为a和b的范围是0 <= a, b <= 100000000。什么??不信,那我们来看一下吧。
- 超时代码:
-
#include<stdio.h>
int main()
{
int a,b,i,cut;
while(scanf("%d%d",&a,&b)!=EOF,(a||b))
{
if(a > b)
{
int t = a;
a = b;
b = t;
}
cut = ;
for(i=a; i<=b; i++)
{
int ans = i;
while(ans > )
{
if(ans% == )
cut++;
ans/=;
}
}
printf("%d\n",cut);
}
return ;
}
我没骗你吧!下面我们来讲这题怎么做吧
算法思想:我们先求1~b 1的个数,在求1~(a-1)1的个数,然后再相减就等于a~b 1的个数了。求1~n 1的个数可以参考一下这个博客:https://blog.csdn.net/yi_afly/article/details/52012593 很详细!不说了,附上代码:
ac代码:
#include<iostream>
#include<cstdio>
using namespace std;
int f(int n)
{
if(n < ) return ;
int ans = ;
int base = ;
int round = n;
while(round > )
{
int weight = round%;
round/=;
ans+=round*base;
if(weight == )
ans+=(n%base)+;
else if(weight > )
ans+=base;
base*=;
}
return ans;
}
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF,(a||b))
{
if(a > b)
{
int t = a;
a = b;
b = t;
}
printf("%d\n",f(b)-f(a-));
}
return ;
}
1的个数 南阳acm514的更多相关文章
- 5个数求最值—南阳acm
问题描述 设计一个从5个整数中取最小数和最大数的程序 输入 输入只有一组测试数据,为五个不大于1万的正整数 输出 输出两个数,第一个为这五个数中的最小值,第二个为这五个数中 ...
- 三个数从小到大排序—南阳acm
问题描述: 现在要写一个程序,实现给三个数排序的功能 输入 输入三个正整数 输出 给输入的三个正整数排序 样例输入 20 7 33 样例输 ...
- 今天的第一个程序-南阳acm输入三个数排序
#include<stdio.h>main(){ int a,b,c,t; scanf("%d%d%d",&a,&b,&c); ...
- 【南阳OJ分类之语言入门】80题题目+AC代码汇总
小技巧:本文之前由csdn自动生成了一个目录,不必下拉一个一个去找,可通过目录标题直接定位. 本文转载自本人的csdn博客,复制过来的,排版就不弄了,欢迎转载. 声明: 题目部分皆为南阳OJ题目. 代 ...
- 南阳ACM8-一种排序
/* 一种排序 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长.宽 都是 ...
- Linux上如何查看物理CPU个数,核数,线程数
首先,看看什么是超线程概念 超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的 ...
- 计算Div标签内Checkbox个数或已被disabled的个数
先看下面的html: 计算div内的checkbox个数:$('#divmod input[type="checkbox"]').length 计算div内checkbox被dis ...
- C#经典笔试题-获取字符串中相同的字符以及其个数
public Dictionary<char,int> GetStrSameAs(string str){ //将字符串转换成一个字符数组. char[] charArray=str.To ...
- Java 计算N阶乘末尾0的个数-LeetCode 172 Factorial Trailing Zeroes
题目 Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in ...
随机推荐
- 【深入理解JAVA虚拟机】第二部分.内存自动管理机制.1.内存区域
1.内存区域 根据<Java虚拟机规范(Java SE 7版)> 的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示. 程序计数器 当前线程所执行的字节码的行号指 ...
- 轮播图3D效果--roundabout(兼容IE8)升级版
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- bzoj1818 [Cqoi2010]内部白点
Description 无限大正方形网格里有n个黑色的顶点,所有其他顶点都是白色的(网格的顶点即坐标为整数的点,又称整点).每秒钟,所有内部白点同时变黑,直到不存在内部白点为止.你的任务是统计最后网格 ...
- c3p0整合mysql报错问题
启动报错: [com.mchange.v2.c3p0.DriverManagerDataSource] - Could not load driverClass com.mysql.cj.jdbc.D ...
- GPU 与CPU的作用协调,工作流程、GPU整合到CPU得好处
http://blog.csdn.net/maopig/article/details/6803141 在不少人的心目中,显卡最大的用途可能就只有两点——玩游戏.看电影,除此之外,GPU并没有其他的作 ...
- sqlserver 2008 r2 直接下载地址,可用迅雷下载
转自 http://www.cnblogs.com/chinafine/archive/2010/12/23/1915312.html sqlserver 2008 r2 直接下载地址,可用迅雷下载 ...
- 清除IE下input的叉叉
很多时候,我们在开发过程中,设计师会在输入框后加上定制的清除图标,但是在IE下有IE自带的清除图标,肯定是不美观的. <style> ::-ms-clear, ::-ms-reveal{d ...
- 7.spring:SpringAOP(配置文件)
SpringAOP(xml文件配置) 配置文件的方式,主要是在xml文件中进行配置,不使用注解! 目录: AtithmeticCalculator.java public interface Atit ...
- js去除空格(trim方法)
/** * 去空格 */ String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g, ""); ...
- 在WinCE上播放声音、设置透明图片、系统音量 C#
记录一下用到的C#在WinCE平台上的相关技巧备查 1.C#在WinCE上实现透明图片 1 2 3 4 5 6 7 8 9 using System.Drawing.Imaging; pu ...