题目:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的次数。

要求:1.写一个函数f(N),返回1到N之间出现“1”的个数。例如f(12)=5。

2.在32位整数范围内,满足条件的f(N)=N的最大N是多少。

#include<iostream>
using namespace std; int search(int n)
{
int a,m=,k,x; x=;
k=n;
do
{
a=k%; if(a>&&a<=)
x=x+(n/m+)*m/;
else if(a==)
x=x+(n/m)*m/+n%(m/)+;
else if(a==)
x=x+(n/m)*m/; m=m*;
k=(k-a)/;
}
while(m<=(n*)); return x;
}
void main()
{
int n,x,y,k; cout<<"输入一个整数:"<<endl;
cin>>n; k=search(n);
cout<<n<<"以内有"<<k<<"个1."<<endl; do
{
n++;
y=search(n);
}
while(y==k); cout<<"含有"<<k<<"个1的最大整数为:"<<n-<<endl; }

思路:一1,个整数内有几个1和它每一位的数有关,即要判断个位,十位,百位各有多少个1。比如123这个数,它个位是3>1,那么这个数个位上就有1,11,21,31....121,

一共有13个“1”,十位是2>1,有10,11,12,13.....19;110,111,112.....119,一共20个“1”。百位是1,一共有100.....123,一共24个“1”。多列举几个数可以发现,每一位上分为三种情况:2~9,0和1;只要分别处理就行。

2~9:个位有(N/10+1)*1个;十位有(N/100+1)*10个,百位有(N/1000+1)*100个.......

1:个位有(N/10)*1+1个,十位有(N/100)*10+(N%10)+1个,百位有(N/1000)*100+(N%100)+1个....

0:有N/10个

感悟:一开始一直没有发现规律,一直做不出来,知道自己思路不对想改变思路,但还是会想着想着想回原来的思路,结果更乱了,心情也会烦躁。最后是睡了一觉,醒了之后就做出来了,不过可能还是可以优化。这次最大的感悟就是当发现自己思路不对时,不妨休息一下或与别人讨论讨论,自己硬想有时候只是浪费时间,钻牛角尖。当发现自己走进误区时一定要想办法走出来,而不是一味坚持己见。

找"1"的更多相关文章

  1. 无法访问org.springframework.core.NestedRuntimeException 找不到org.springframework.core.NestedRuntimeException的类文件

    在学习springAOP时,出现如下异常: 无法访问org.springframework.core.NestedRuntimeException 找不到org.springframework.cor ...

  2. “此网页上的某个 Web 部件或 Web 表单控件无法显示或导入。找不到该类型,或该类型未注册为安全类型。”

    自从vs装了Resharper,看见提示总是手贱的想去改掉它.于是乎手一抖,把一个 可视web部件的命名空间给改了. 喏,从LibrarySharePoint.WebPart.LibraryAddEd ...

  3. 用apt-file解决找不到头文件的问题

    在编译C语言的开源项目的时候,经常会出现头文件找不到的问题. 解决这类问题有一个特别好用的工具apt-file 1.在ubuntu下安装 sudo apt install apt-file 2.更新索 ...

  4. 周末聊聊IT人员的人脉观:关于帮妹子找兼职有感

    背景: 前几天,有个认识了好几年的网友,现在是大学生,在厦门读大一,说和她同学要一起到广州找兼职,看我有没有介绍. 像我这么积极热心善良的人,就说帮她找找看,结果问了几次,没消息,只好诚实的回复人家, ...

  5. 警惕!高版本VS发布时预编译导致Mono中Razor找不到视图

    早前一段时间,一位朋友在Q群里面找到我,说它按照<Linux.NET学习手记>的操作,把一个ASP.NET MVC 4.0的项目部署到Mono之后出现Razor无法找到视图的现象.当时费了 ...

  6. Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化

    9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Fri ...

  7. 使用T-SQL找出执行时间过长的作业

        有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下:   SELECT sj.name , ...

  8. 未能加载文件或程序集“Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5”或它的某一个依赖项。系统找不到指定的文件。

    在创建ASP.NET MVC项目过程中发生了这个异常 未能加载文件或程序集"Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0 ...

  9. 从网上找的 visual studio 的各个版本下载地址,vs2010/vs2012/vs2013带注册码

    从网上找的 visual studio 的各个版本下载地址,很全,从 6.0 一直 到 vs2013,要的拿去吧... Microsoft Visual Studio 6.0 下载:英文版360云盘下 ...

  10. win10用户文件夹重命名,启用administrator账户,删除文件夹时提示找不到该项目

    这一切都源自楼主洁癖一般的强迫症. 楼主在重置win10后的安装过程中用microsoft账户登录的电脑,发现用户文件夹名称怪怪的,于是想重命名一下.楼主发现重命名用户文件夹并不能简单地用F2搞定,于 ...

随机推荐

  1. Xilinx实习一年总结

    从去年7月4号来到上海xilinx.转眼间已经一年.这一年学了非常多知识,也长了非常多见识. 去年七月一到公司,马上投入到摄像头-DDR-HDMI图像通路的研发中.就是在ZEDboard板卡上.通过外 ...

  2. Servlet基础笔记

    一.什么Servlet? servlet 是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序).servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户 ...

  3. virtualbox虚拟机与物理机windows文件共享

    必须安装virtualbox的增强功能包(VBoxGuestAdditions) 1.打开Linux系统,选择 设备->安装增强增强功能 2.等待其自动安装,当出现press return to ...

  4. 2017-2018-2 『网络对抗技术』Exp1:PC平台逆向破解

    1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程 ...

  5. 20145234黄斐《Java程序设计》实验五—网络安全与编程

    1: 两人一组结对编程: 0. 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA 1. 结对实现中缀表达式转后缀表达式的功能 MyBC.jav ...

  6. 【CF617D】Roads in Yusland

    [CF617D]Roads in Yusland 题面 蒯的洛谷的 题解 我们现在已经转化好了题目了,戳这里 那么我们考虑怎么求这个东西,我们先判断一下是否所有的边都能被覆盖,不行的话输出\(-1\) ...

  7. HDU - 5289 Assignment (RMQ+二分)(单调队列)

    题目链接: Assignment  题意: 给出一个数列,问其中存在多少连续子序列,使得子序列的最大值-最小值<k. 题解: RMQ先处理出每个区间的最大值和最小值(复杂度为:n×logn),相 ...

  8. bootstrap学习笔记(4)

    bootstrap辅助类 总结几个常用的辅助类 .text-hide将页面元素所包含的文本设置为透明并且字体设置为0所以文本就看不见了 .hidden将页面的元素visible属性设置为hidden; ...

  9. Linux 技巧

    Linux Handbook For RedHat Enterprise Linux System System # clean old kernel packages package-cleanup ...

  10. FATAL ERROR: Tried to use mysqladmin in group......

    解决办法,#export PATH=$PATH:/usr/bin