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的数含这些数的数,虽然做出来了但换是没弄清具体是什么原理。

  • 相关阅读:
    HDU 1525
    kmp模板
    hdu 4616 Game(树形DP)
    hdu 4619 Warm up 2(并查集活用)
    hdu 4614 Vases and Flowers(线段树加二分查找)
    Codeforces 400D Dima and Bacteria(并查集最短路)
    poj 2823 Sliding Window (单调队列)
    hdu 2196 Computer(树形dp)
    hdu 4604 Deque
    最短路径
  • 原文地址:https://www.cnblogs.com/xizhenghe/p/4553322.html
Copyright © 2011-2022 走看看