面試題32 從1到n整數中1出現的次數

2021-06-17 16:39:50 字數 686 閱讀 6964

題目:輸入乙個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12共4次。

1,不考慮時間效率的方法,每瀏覽乙個數,判斷每一位是不是含1.時間複雜度:位數o(logn),數n,總:o(n*logn)

2,根據數學規律:排列組合

對1000:

最高位:0,3*10*10-2種

1::1*(0+1)*(0+1)*(0+1)

1234:

最高位:0,3*10*10-2種

1::1*(2+1)*(3+1)*(4+1)

3124:

最高位:0,2:2*(3*10*10-2)種

1::1000

3:f(124)

源**:

#include "stdio.h"

int caliq(int i,int q)

int f(int data)

//printf("i:%d;q:%d;high:%d",i,q,high);

if(data>=q && data<2*q)

else ;}

void main()

結果:

result:1633press any key to continue

面試題32 從1到n整數中1出現的次數

include include include using namespace std int powerofn int n return result int numberofone const char str int len strlen str int first str 0 if 1 le...

面試題32 從1到n整數中1出現的次數

題目描述 輸入乙個整數n,求從1到n這個整數的十進位制表示中1出現的次數。例如,輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次。解決方案 解法一 不考慮時間複雜度 我的 實現,僅供參考 1 public static int numofonefromoneton ...

整數中1出現的次數(從1到n整數中1出現的次數)

求出1 13的整數中1出現的次數,並算出100 1300的整數中1出現的次數?為此他特別數了一下1 13中包含1的數字有1 10 11 12 13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數。include u...