博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
找出十进制数中出现的''一''的个数
阅读量:4967 次
发布时间:2019-06-12

本文共 1697 字,大约阅读时间需要 5 分钟。

一、题目要求:

给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
要求: 1.写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数。例如 f(12)  = 5。
    2.在32位整数范围内,满足条件的“f(N) =N”的最大的N是多少。
二、解决思路
  通过列举几个数进行计算,可以发现函数f(N)规律如下:
  1.一位十进制数:当N>=1时,f(N)=1;当N=0时,f(N)= 0;
  2.两位十进制数:f(13)=个位出现1的个数+十位出现1的个数=2+4=6;
          f(23)=个位出现1的个数+十位出现1的个数=3+10=13;
          ......
          f(93)=个位出现1的个数+十位出现1的个数=10+10=20;
  3.三位十进制数:f(103)=个位出现1的个数+十位出现1的个数+百位出现1的个数=(10+10)+1+100;
                            f(203)=...=(10+10)*2+1+100;

                            f(303)=...=(10+10)*3+(1)+100;

                            ......

     
  4.f(abcde),计算c位上的1的个数,需要看ab、c、de的情况:
    当c=0时,受高位影响,百位上出现1的个数为:(ab)*100
    当c=1时,受高位和低位影响,百位上出现1的个数为:(ab)*100+((cde)+1)
    当c>1时,受高位影响,百位上出现1的个数为:((ab)+1)*100
三、源代码
1 #include "iostream.h" 2 #include "stdlib.h" 3 int CountNum(int n) 4 { 5     int count=0;  6     int factor=1;  7     int LowerNum=0; 8     int CurNum=0; 9     int HigherNum=0;10     while (n/factor!=0)       11     {12         LowerNum=n-(n/factor)*factor;13         CurNum=(n/factor)%10;14         HigherNum=n/(factor*10);15         switch (CurNum)16         {17         case 0:18             count=count+HigherNum*factor;19             break;20         case 1:21             count=count+HigherNum*factor + LowerNum +1;22             break;23         default:24             count=count+(HigherNum+1)*factor;25             break;26         }27         factor=factor*10;28     }29     return count;30 }31 32 int main()33 {34     int num;35     cout<<"请输入数字:\n";36     cin>>num;37     cout<<"\n";38     cout<
<<"中出现数字1的个数为:\n";39 cout<
<

四、代码截图

五、实验心得

        当我们拿到看似没有思路的问题时,可以列举一下有代表性的数,从中找取规律,比如这次实验中,看似无从下手,但是当我们把每个阶段的数据列举出来时,便可以找到其中的规律。

转载于:https://www.cnblogs.com/yuanyajiao/p/4474992.html

你可能感兴趣的文章
案例------冒泡排序
查看>>
Hexo中添加emoji表情
查看>>
setsocketopt() usage
查看>>
Xml处理工具类(Jdom)
查看>>
返回文件路径中的想要的值
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
maven常用配置信息和常量
查看>>
20120227_CET6
查看>>
Navicat Premium 连接Oracle 数据库(图文教程)
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
SqlCel 和MySQL for Excel在批量处理数据上的优劣
查看>>
leetcode【67】-Bulb Switcher
查看>>
JS验证图片格式和大小并预览
查看>>
调节心态的十种做法
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
乱七八糟
查看>>
潜罪犯
查看>>
python函数
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>