zoukankan      html  css  js  c++  java
  • 程序设计之寻找数列中的1

    一、题目

    给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
    要求:
    写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数。例如 f(12)  = 5。
    在32位整数范围内,满足条件的“f(N) =N”的最大的N是多少。
    二。设计思路
    我打算寻找一种通用算法,能算所有数的算法。具体是,对于各个数位的1做分别计算,比如个位的1是最大数N/10的商乘上1加上对于余数的判断;而十位的1是最大数N/100*10加上对于两位余数的判断,以此类推就能推广到所有数,但是我目前还未实现,先附上大致代码思路(PS:结果并不正确)
    三、代码
    #include<iostream.h>
    int f(int N)
    {
        int x,y,sum=0,fu=1;
        do{
            x=N/(fu*10);
            y=N%(fu*10);
            if(x==0)
            {
                if(y>fu)
                {
                    sum=sum+fu;
                }
            }
            sum=sum+x*fu;
            fu=fu*10;
        }while(x>0);
        return sum;
    }
    void main()
    {
        int N=10;
        cout<<f(N);
    }
  • 相关阅读:
    命令模式
    单例模式
    装饰者模式
    监听者模式
    三角形三心和特点
    u3d中texture2D的Advanced设置解析
    c# 三种常见的委托
    c# float显示时保存一位小数
    Jakarta Java Mail属性参数配置
    SpringDataRedis的Keyspaces设置
  • 原文地址:https://www.cnblogs.com/boluoland/p/4469005.html
Copyright © 2011-2022 走看看