编程之美-----1的个数

    xiaoxiao2021-03-25  180

    #include <stdio.h> #include <stdlib.h> int SUMone(int N) { int iter = 0, icount = 0 , Ntemp, bitNum = 0; Ntemp = N; for(iter = 1; iter <= N; iter++) { Ntemp = iter; while(Ntemp != 0) { bitNum = Ntemp % 10; if(bitNum == 1) { icount++; } Ntemp = Ntemp / 10; } } return icount; } //核心算法,高效的核心算法来计算f(N) int Sumbetter(int N) { int icount = 0; int highNum = 0; int currNum = 0; int lowNum = 0; int ifactor = 1; while(N / ifactor != 0) { highNum = N / (ifactor * 10); currNum = (N / ifactor) % 10; lowNum = N - (N / ifactor) * ifactor; switch(currNum) { case 0: icount = icount + highNum * ifactor; break; case 1: icount = icount + highNum * ifactor + lowNum + 1; break; default: icount = icount + (highNum + 1) * ifactor; break; } ifactor = ifactor * 10; } return icount; } int main() { int testNum; testNum = 205; printf("the amount of the Number is %d\n",SUMone(testNum)); printf("the amount of the Number is %d",Sumbetter(testNum)); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-2985.html

    最新回复(0)