博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1的个数
阅读量:4698 次
发布时间:2019-06-09

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

一:题目

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

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

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

二:设计思路

首先对于第一个问题,根据王老师的提示,想到计算出每个个十百千位上各出现几次1相加即可,考虑各个位上的数等于0,1以及大于1三种情况即可找到规律。

三:代码

1 #include
2 using namespace std; 3 4 int geshu(int value) 5 { 6 int a,b,c,d,e,a1,b1,c1,d1,e1,sum; 7 a=0;b=0;c=0;d=0;e=0; 8 a=value%10; 9 b=value/10;10 b=b%10;11 c=value/100;12 c=c%10;13 d=value/1000;14 d=d%10;15 e=value/10000;16 cout<<"各位上的数字分别为:"<
<<" "<<<" "<
<<" "<
<<" "<
>value;54 while(value<0||value>=100000)55 {56 cout<<"请重新输入:";57 cin>>value;58 }59 sum=geshu(value);60 cout<
<<"1的个数为:"<
<

四:实验截图

五:总结

对于这种数的计算很多都是查找规律,只要找到一个规律突破点那么这个题目迎刃而解,遇到这种情况先列举几个简单而又特殊的例子通过例子找规律,这样就会变得容易的多。

转载于:https://www.cnblogs.com/dyc940210/p/4552922.html

你可能感兴趣的文章
增强学习————K-摇臂赌博机
查看>>
Latex Tips:
查看>>
chrome 开发者工具,查看元素 hover 样式
查看>>
多校题解
查看>>
HackerRank Extra long factorials
查看>>
js和jquery的基本应用
查看>>
Vanilla Masker – 功能强大的输入过滤插件
查看>>
imagesLoaded – 检测网页中的图片是否加载
查看>>
1005 Number Sequence(HDU)
查看>>
Mono For Android离线激活
查看>>
20135302魏静静Linux内核分析第二周学习总结
查看>>
XML文件中<return_code><![CDATA[SUCCESS]]></return_code>中CDATA的用法
查看>>
《重构:改善既有代码的设计》重构的方法整理
查看>>
HBase工程师线上工作经验总结----HBase常见问题及分析
查看>>
FICO_月末关帐
查看>>
获取包含中文字符串的长度、截取包含中文的字符串
查看>>
unity编辑器学习,创建自己的窗口
查看>>
Microsoft Build 2015
查看>>
使用EntityFrameWork 5.0增删查改(&分页,连表)
查看>>
ios block常见的错误(三)——并发编程的block引用
查看>>