zoukankan      html  css  js  c++  java
  • 一个整数N中的1的个数

    设计思想:

    通过大量数据分解找规律

    abcd 从d开始若d=0则count(1的个数)=左边的abc *d的位值(1、10、100、、) 若等欲1则count=左边的abc*d的位值(1、10、100、、),若为大于1的值则为(左边的abc +1)*d的位值(1、10、100、、) ,依次对c,b,a进行count++。

    源代码:

    #include<iostream>
    using namespace std;
    void main()
    {
        int N=124;
         int weizhi=1;//标记计数1的位数(1为个位,10为十位)

        int now=0;//当前位数数字

        int down=0;//较低位数字大小(可为多位)

        int up=0;//较高位数字大小

        int count=0;
        cout<<"输入N:"<<endl;
        cin>>N;
        while(N/weizhi!=0)
        {

            //获取数字

            now=(N/weizhi)%10;

            down=N-(N/weizhi*weizhi);

            up=N/(weizhi*10);

            if(0==now)//当前数字为0时计数

            {

                count+=up*weizhi;

            }

            else if(1==now)//当前数字为1时计数

            {

                count+=up*weizhi+down+1;

            }

            else

            {

                count+=(up+1)*weizhi;

            }

            weizhi=weizhi*10;//数字左移一位
        }
        cout<<"输出1的个数:";
        cout<<count<<endl;
    }

    总结:从大量数据中分析有特点的几个数比如0,1,大于1的数含这些数的数,虽然做出来了但换是没弄清具体是什么原理。

  • 相关阅读:
    Windows10 JDK1.8安装及环境变量配置
    Adobe Premiere Pro 2020破解教程
    如何消除任务栏系统更新失败的图标
    微服务架构-Gradle下载安装配置教程
    第十五次-语法制导的语义翻译
    第十四次——算符优先分析
    第09组 Alpha冲刺(4/4)
    第09组 Alpha冲刺(3/4)
    第09组 Alpha冲刺(2/4)
    第09组 Alpha冲刺(1/4)
  • 原文地址:https://www.cnblogs.com/xizhenghe/p/4553322.html
Copyright © 2011-2022 走看看