一、题目要求

给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
要求:
写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数。例如 f(12)  = 5。
在32位整数范围内,满足条件的“f(N) =N”的最大的N是多少。
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。
(截止日期2015-4-30晚18:00)
二、设计思想
首先得列出当N为1~AB(2=<A=<9)以内时,各种情况十位与个位“1”的个数,可以肯定十位的“1”与个位数上的“1”有关,即十位上“1”为B-0+1,个位上“1”与十位上数有关,即个位上“1”为A-0+1,所以用一个count变量记住“1”的个数。
三、代码
#include<iostream.h>
int main()
{
int count=0,i,N,temp;
cout<<"请输入N的值:";
cin>>N;
for(i=1;i<=N;i++)
{
temp=i;//记录i的值
while(temp!=0)
{
count+=(temp%10==1)?1:0;
temp/=10;//直接用i的话,i最后变为0,++的话变为1,死循环了
}
}
cout<<count<<endl;
return 0;
}
四、截图
当N=101时,百位上“1”有2个,十位上“1”有10个,个位上“1”有11个,总共23个
五、总结
 这个题目与以前题目都有一个相似之处,就像以前求读者买一批书的最低价格题目,都得找出一些数范围的各种联系或者规律,
再设计算法就好解决了,总之找规律很重要特别是这种需要技巧的程序设计题,技巧很重要。但是切记不是任何题目都有技巧,
所以特定题目特定考虑,找到最优算法。
 
 
 

求1到N(正整数)之间1出现的个数的更多相关文章

  1. d029: 求出2-100之间的所有质数(素数)

    内容: 求出2-100之间的所有质数(素数) 输入说明: 无 输出说明: 一行一个素数 /* 质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数(不包括0)整除的数. */ ...

  2. 任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0。

    题目:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0. 解法一:暴力求解.从1开始查找M,然后判断M*N=X这个数字是否只含有0,1. 解法二:由 ...

  3. 求前n项正整数的倒数和

    求前n项正整数的倒数和 前n项正整数的和是一个发散的序列,学过高等数学的这个都知道.所以它没有一个精确的公式,但是近似的公式是有的: 1 + 1/2 + 1/3 + …… + 1/n ≍ ln n + ...

  4. 求出全部的正整数对 使他们最大公约数为n,最小公倍数为m

    题目大概是这种:cid=1021&pid=5http://" target="_blank">点击打开链接 大意就是 求出全部的正整数对 使他们最大公约数为 ...

  5. 求N的阶乘N!中末尾0的个数

    求N的阶乘N!中末尾0的个数 有道问题是这样的:给定一个正整数N,那么N的阶乘N!末尾中有多少个0呢?例如:N=10,N=3628800,则N!的末尾有两个0:直接上干货,算法思想如下:对于任意一个正 ...

  6. POJ - 3415 Common Substrings(后缀数组求长度不小于 k 的公共子串的个数+单调栈优化)

    Description A substring of a string T is defined as: T( i, k)= TiTi+1... Ti+k-1, 1≤ i≤ i+k-1≤| T|. G ...

  7. 数位DP 求K进制下0~N的每个数每位上出现的数的总和

    好久没写博客了,因为感觉时间比较紧,另一方面没有心思,做的题目比较浅也是另一方面. 热身赛第二场被血虐了好不好,于是决定看看数位DP吧. 进入正题: 如题是一道经(简)典(单)的数位dp. 第一步,对 ...

  8. poj 1523Tarjan算法的含义——求取割点可以分出的连通分量的个数

    poj 1523Tarjan算法的含义——求取割点可以分出的连通分量的个数 题目大意:如题目所示 给你一些关系图——连通图,想要问你有没有个节点,损坏后,可以生成几个互相独立的网络(也就是连通分量), ...

  9. js求1到任意数之间的所有质数

    何为质数: 只能被1 和 自身 整除的数; 方法: 利用js中求模, 看是否有余数. ---> 3%2 = 1; 5%2 = 3......... 代码如下: function test (n) ...

随机推荐

  1. 前端基础-jQuery的事件的用法

    阅读目录 常用事件 事件绑定 移除事件 页面载入 一.常用事件 1.鼠标事件之click事件 用交互操作中,最简单直接的操作就是点击操作.jQuery提供了两个方法一个是click方法用于监听用户单击 ...

  2. sql for xml path 处理

    1.将下列结果集 做成 aa   语文,数学 bb    英语,语文 这种格式 使用 for xml  path  记得去重复 WITH cte AS(SELECT stu.studentname,c ...

  3. Delphi Firemonkey在主线程 异步调用函数(延迟调用)

    先看下面的FMX.Layouts.pas中一段代码 procedure TCustomScrollBox.MouseDown(Button: TMouseButton; Shift: TShiftSt ...

  4. Tomcat优化(心得经验)

    最近用httpclient做performance testing时,发现当线程加到150时服务端就会抛出socket资源用尽的错误,根本没法再往上加,响应的速度也是相当的慢,后来经过研究,发现在se ...

  5. STM32(6)——USART串口的使用

    1. 串口的基本概念 在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换.USART利用 ...

  6. linux中配置JDK环境变量

    使用的centos版本为 7.5 首先我们要把jdk拷到linux中,这里我们借助XShell工具,我们先来看看Xshell的用法 打开Xshell 后点击文件,“新建“,如下图: 起一个名称,主机填 ...

  7. 中国大学MOOC-JAVA学习(浙大翁恺)—— 信号报告

    使用switch-case语句的练习 import java.util.Scanner; public class Main { public static void main(String[] ar ...

  8. TCP交互流程

    前言:在FPGA上实现TCP协议实际是一个不太好的计划,因为FPGA最擅长的是流水线处理方式,而TCP存在交互,导致FPGA需要进行反馈式的处理.但是由于项目新增的附加要求而又只能在FPGA上去实现T ...

  9. Oracle入门第一天(上)——简介与安装

    一.Oracle介绍  Oracle 公司是全球最大的信息管理软件及服务供应商,成立于1977年 Oracle 公司因其复杂的关系数据库产品而闻名.Oracle的关系数据库是世界第一个支持SQL语言的 ...

  10. jquery ajax实例教程和一些高级用法

    jquery ajax的调用方式:jquery.ajax(url,[settings]),jquery ajax常用参数:红色标记参数几乎每个ajax请求都会用到这几个参数,本文将介绍更多jquery ...