在從1到n的正數中1出現的次數

2021-07-16 19:57:06 字數 836 閱讀 8370

int count1in1ton(int n)

return n;

}int countnumber1(int n)

return

count;

}

程式設計之美上的方法:

//大體的思路是這樣的:

//假設n=abcde,這裡a,b,c,d,e分別是十進位制數n的各個位數上的數字。如

//果要計算百位上出現1的次數,它會受到三個因素影響:百位數上的數字

//,百位以下的數字,百位以上的數字。

//a、如果百位上的數字為0,則百位出現1的次數由更高位決定。如12013,

// 則可以知道百位出現1的情況可能是100~199,1100~1199,2100~2199。

// 11100~11199,一共1200個。也就是由更高位數字(12)決定,並且等

// 於更高位數字(12)*當前位數(100);

//b、如果百位上數字為1,則百位上出現1的次數由更高位和低位共同決定。

// 例如對於12113,受高位的影響百位出現1的個數為等於更高位數字(12)

// *當前位數(100)=1200.但是它還受低位影響,等於低位數字(13)+1;

//c、如果百位上的數字大於1(即為2-9),則百位出現1的次數僅由更高位

// 決定,比如12213,等於更高位數字+1(12+1)*當前位數(100)=1300.

int count1in1ton(int n)

factor *= 10;

}return

count;

}

在從1到n的正數中1出現的次數

題目 輸入乙個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。我的思路是計算每一位上1會出現在哪些數字中。建乙個陣列a n 放置每一位,從個位到最高位,0 n,這裡n 4。a 0 5,a 1 0,a ...

求在從1到n的正數中1出現的次數

題目 輸入乙個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。問題描述 給定乙個十進位制正整數n,寫下從1開始,到n的所有整數,然後數一下其中出現的所有 1 的個數。例如 n 2,寫下1,2。這樣只出...

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

1 方法一 class solution1 n n 10 return cnt int numberof1between1andn solution int n return cnt 2 方法二 使用遞迴的思路 class solution2 else if 1 len first digit 0 ...