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> 
    int find(int num) 
    { 
        int count=0;//定义一个存储1的个数的变量 
        int temp;//定义一个缓存的变量 
        for(int i=1;i<=num;i++) 
        { 
            temp=i; 
            while(temp!=0) 
            { 
                if(temp%10==1) 
                { 
                    count++; 
                } 
                temp=temp/10; 
              
            } 
        } 
        return count; 
    } 
      
    int main(void) 
    { 
        int num1; 
        cout<<"请输入数:"; 
        cin>>num1; 
        cout<<"包含1的个数是:"<<find(num1)<<endl; 
        return 0; 
    } 
    

     四,实验截图

  • 相关阅读:
    数据库(2019年10月30日)
    (面试题)反射(2019年10月28日)
    反射(2019年10月28日)
    常微分复习重点
    重要定理及其证明
    实变函数复习重点
    泛函分析重点定理
    自旋玻璃简介
    Fnight博文发布规范
    [分析力学]解题思路
  • 原文地址:https://www.cnblogs.com/lllzy/p/4569702.html
Copyright © 2011-2022 走看看