zoukankan      html  css  js  c++  java
  • 【编程之美】2.4 1的数目

    这道题其实是做过了的,在http://www.cnblogs.com/dplearning/p/3921535.html

    但是再次做还是相当的糟糕。又看了一遍答案。

    关键:要求每一位上1的个数, 其任意一位上1的个数受当前位、高位、低位三方面的影响。 注意这三位怎么求,注意数据类型。注意循环条件。

    #include <stdio.h>
    
    long long Sum1s(unsigned long long n)
    {
        unsigned long long iCount = 0;
        unsigned long long iFactor = 1;
    
        unsigned long long iCurrent = 0;
        unsigned long long iHigher = 0;
        unsigned long long iLower = 0;
    
        while(n/iFactor != 0)
        {
            iHigher = n / (iFactor * 10);
            iLower = n % iFactor;
            iCurrent = (n / iFactor) % 10;
    
            switch(iCurrent)
            {
            case 0: iCount += iHigher * iFactor; break;
            case 1: iCount += iHigher * iFactor + iLower + 1; break;
            default: iCount += (iHigher + 1) * iFactor; break;
            }
    
            iFactor *= 10;
        }
        return iCount;
    }
    
    int main()
    {
        long long num = Sum1s(123);
        return 0;
    }

     扩展问题,如果数字不是10进制的如何:

    很简单,把所有用到10的地方都换成需要的进制数就可以了。

    long long Sum1sDifferentFactor(unsigned long long n, unsigned char factor)
    {
        unsigned long long iCount = 0;
        unsigned long long iFactor = 1;
    
        unsigned long long iCurrent = 0;
        unsigned long long iHigher = 0;
        unsigned long long iLower = 0;
    
        while(n/iFactor != 0)
        {
            iCurrent = (n / iFactor) % factor;
            iHigher = n / (iFactor * factor);
            iLower = n % iFactor;
    
            switch(iCurrent)
            {
            case 0: iCount += iHigher * iFactor; break;
            case 1: iCount += iHigher * iFactor + iLower + 1; break;
            default: iCount += (iHigher + 1) * iFactor; break;
            }
            
            iFactor *= factor;
        }
        return iCount;
    }
  • 相关阅读:
    go操作windows进程相关
    HTML5-格式化
    HTML5-属性
    关于sublime建立python工程的说明
    在Windows系统中安装matplotlib,需要注意的问题
    WPF combobox数据绑定和数据获取
    String的用法——其他功能
    String的用法——获取功能
    String的用法——判断功能
    String的用法——构造方法
  • 原文地址:https://www.cnblogs.com/dplearning/p/4031358.html
Copyright © 2011-2022 走看看