中 統計數字區間1出現的次數

2021-10-23 11:47:51 字數 757 閱讀 1724

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

這道題我們首先可以大概猜測出,1出現的次數跟位數有關。如果用位數直接對應有些麻煩,比如十位上的n(>1),會出現n+9次,但是n為百位,千位......上時規律比較難以求出,所以我們不採用這種方法。

我們可以把每個數字拆出來,比如十位,比如215,就會有11,12......19;111,112......119;211,212......215;可以看出這是由十位之前的數值所影響的,十位前面是2,所以十位上至少會有2*10次1的出現,本位和后位影響,5導致了5+1次的出現。顯然百位同理,對於百位前的值為0,所以只剩本位,2,顯然1已經過去了,所以從100......199共100個1存在。到這裡我們可以推出規律,當current位的高位不為零時,本位一定至少會出現(高位*本位值),本位為0無影響,本位為1則有額外的(低位值+1)(因為0),本位為》1則直接(+本位值)。

public class solution 

if(yu>1)

cur*=10;

}return sum;

}}

當然,還有一種最直接的方法,就是暴力求解,把n遞減,然後轉換成陣列來計算每乙個值的1個數...缺點是特別慢...

--end--

統計數字出現次數

description 某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 10 9 已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。input 包含多個測試資料,每個包含n 1行 第1行是整數n,表示自然數的個...

Uva1640(統計數字出現的次數)

題意 統計兩個整數a,b之間各個數字 0 9 出現的次數,如1024和1032,他們之間的數字有1024 1025 1026 1027 1028 1029 1030 1031 1032 總共有10個0,10個1,3個3等等。解法 這類問題的一般步驟都是先用f n,d 計算出0 n中d數字出現的次數,...

統計整數中1出現的次數

題目來自acm之家 題目 親們!我們的外國友人yz這幾天總是睡不好,初中奧數里有乙個題目一直困擾著他,特此他向jobdu發來求助信,希望親們能幫幫他。問題是 求出1 13的整數中1出現的次數,並算出100 1300的整數中1出現的次數?為此他特別數了一下1 13中包含1的數字有1 10 11 12 ...