zoukankan      html  css  js  c++  java
  • 寻找数列中的1

    一、题目与要求
    • 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
    • 要求:写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数。例如 f(12)  = 5。

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

    二、设计思路

    先计算2位数和3位数的1的个数的情况,然后递归出1的个数的算法,进行编程。

    三、实验代码

    #include<iostream.h>
    int main()
    {
        int num;        
        int tag=1;     
            int count=0;        
        int heigher,cur,lower;    
        cout<<"请输入数据:";
        cin>>num;
        while(num/tag!=0)
        {
            heigher=num/(tag*10);       
            cur=(num/tag)%10;            
            lower=num%tag;                
            switch(cur)
            {
            case 0:
                count=count+heigher*tag;
                break;
            case 1:
                count=count+heigher*tag+lower+1;
                break;
            default:
                count=count+(heigher+1)*tag;
                break;
            }
            tag=tag*10;
        }
        cout<<"1出现的个数为:"<<count<<endl;
        return 0;
    }

    四、实验截图:

  • 相关阅读:
    与 字符串 相关的操作 -- lua语言实现(带有浓厚的 lua 语法特性)
    03-BFC
    11-canvas
    JavaScript知识点 思维导图
    文件系统 函数
    Meta标签大全
    PHP 快速排序
    天气预报API开发
    Zend Studio XDebug调试配置
    启程
  • 原文地址:https://www.cnblogs.com/xuqingtian/p/4558404.html
Copyright © 2011-2022 走看看