码迷,mamicode.com
首页 > 其他好文 > 详细

课堂练习——找1

时间:2015-05-03 14:34:13      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

题目要求:

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

     要求:   

1    1.写一个函数 f(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(123)=个位出现1的个数+十位出现1的个数+百位出现1的个数=13+20+24=57;     

  4.f(abcde),计算c位上的1的个数,需要看abcde的情况:

    当c=0时,受高位影响,百位上出现1的个数为:(ab)*100

    当c=1时,受高位和低位影响,百位上出现1的个数为:(ab)*100+((cde)+1)

    当c>1时,受高位影响,百位上出现1的个数为:((ab)+1)*100

二、程序代码

    

 1 题目要求:
 2   给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
 3 要求: 1.写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数。例如 f(12)  = 5 4     2.在32位整数范围内,满足条件的“f(N) =N”的最大的N是多少。
 5 一、设计思路
 6   通过列举法,总结函数f(N)规律如下:
 7   1.一位十进制数:当N>=1时,f(N)=1;当N=0时,f(N)= 0;
 8   2.两位十进制数:f(13)=个位出现1的个数+十位出现1的个数=2+4=6;
 9           f(23)=个位出现1的个数+十位出现1的个数=3+10=13;
10           ......
11           f(93)=个位出现1的个数+十位出现1的个数=10+10=20;
12   3.三位十进制数:f(123)=个位出现1的个数+十位出现1的个数+百位出现1的个数=13+20+24=5713   4.f(abcde),计算c位上的1的个数,需要看ab、c、de的情况:
14     当c=0时,受高位影响,百位上出现1的个数为:(ab)*100
15     当c=1时,受高位和低位影响,百位上出现1的个数为:(ab)*100+((cde)+1)
16     当c>1时,受高位影响,百位上出现1的个数为:((ab)+1)*100
17 程序代码
18 运行结果截图
19 总结与心得
20     本次实验的题目是找1的个数,完成时设计思路花费的时间比较长,主要是用于总结规律,对于这种偏于数学应用方面的题目,只要找到规律,那么所有问题都不再困难。这也给我们提示,在我们平时解决问题时,一定要多加思考,这样才能事半功倍。
21     

三、运行结果截图

    技术分享

     技术分享

     技术分享

四、总结与心得

    本次实验的题目是找1的个数,完成时设计思路花费的时间比较长,主要是用于总结规律,对于这种偏于数学应用方面的题目,只要找到规律,那么所有问题都不再困难。这也给我们提示,在我们平时解决问题时,一定要多加思考,这样才能事半功倍。

    

 

课堂练习——找1

标签:

原文地址:http://www.cnblogs.com/mudanhuakai/p/4473960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!