zoukankan      html  css  js  c++  java
  • 数1游戏

    一、实验题目

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

                        1、写一个函数F(N),返回1~N之间出现“1”的个数,例如:F(12)=5;

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

    二、设计思路

      规律:

         每一位上都只有三种情况:0,1,2-9  第 i 位(个位算作第0位,十位算作第1位。。。。。):

                                           0:   Num/(10^(i+1))*(10^i)

                                            1:     Num/(10^(i+1))*(10^i)+Num%(10^i)+1;

                                            2-9:  (Num/(10^(i+1))+1)*(10^i)

       代码:

     #include<iostream.h> 
     #include<math.h> 
    
    int shu1(int num)
    { 
        int flog=1;//标记计数1的位数(1为个位,10为十位) 
        int now=0;//当前位数
        int low=0;//较低位数 
        int high=0;//较高位数 
        int count=0; 
        
        while(num/flog!=0)     
        {
            now=(num/flog)%10; 
            low=num-(num/flog*flog); 
            high=num/(flog*10); 
            if(num<=0) 
                return 0; 
            if(0==now)//当前数字为0时计数 
            {
                count+=high*flog;    
            }
            else if(1==now)//当前数字为1时计数     
            {
                count+=high*flog+low+1;    
            }
            else    
            {    
                count+=(high+1)*flog;    
            }
            flog=flog*10;//数字左移一位    
        }
        return count;    
    }
    void main()
    {
        int num;
        int max=0;
        cout<<"请输入要测试的数值:";
        cin>>num;
        cout<<"出现“1”的个数为:"<<shu1(num)<<endl;    
    }
    

      截图:

    实验总结: 结合老师课堂上的分析,编写代码的过程其实不是很复杂,主要是算法思想如何能够简单快捷的实现目标,准确找到1的个数,个位数上的1,十位数上的1,最后求和就可以编写出来基本代码。

  • 相关阅读:
    【leetcode】500. Keyboard Row
    【排序算法汇总】5类8种排序算法
    【leetcode】339. Nested List Weight Sum
    ArcCatalog中将SQLServer中的空间数据导入到Oracle库中
    初学ArcGIS API for JavaScript
    ArcGIS API for JavaScript开发环境配置
    shapefile与gdb中不能允许存在的几何错误
    C#中的Dictionary字典类介绍(转载)
    泛型Dictionary<string,string>的用法
    空间数据存储格式wkb和wkt(转载)
  • 原文地址:https://www.cnblogs.com/TSbj/p/4585859.html
Copyright © 2011-2022 走看看