問題描述:
一本書的頁碼從自然數1開始順序編碼直到自然數n。書的頁碼按照通常的習慣編排,每個頁碼都不含多餘的前導數字0。例如第6頁用6表示而不是06或006。
數字統計問題要求對給定書的總頁碼,計算出書的全部頁碼中分別用到多少次數字0,1,2,3,.....9。
演算法分析:
比如,對於乙個數字34567,我們可以這樣來計算從1到34567之間所有數字中每個數字出現的次數:
從0到9999,這個區間的每個數字的出現次數可以使用原著中給出的遞推公式,即每個數字出現4000次。
從10000到19999,中間除去萬位的1不算,又是乙個從0000到9999的排列,這樣的話,從0到34567之間
的這樣的區間共有3個。所以從00000到29999之間除萬位外每個數字出現次數為3*4000次。然後再統計
萬位數字,每個區間長度為10000,所以0,1,2在萬位上各出現10000次。而3則出現4567+1=4568次。
之後,拋掉萬位數字,對於4567,再使用上面的方法計算,一直計算到個位即可。
下面是自己的實現**:
package abc;public class countnum
public static int judge(int m)
//去除多餘的0的個數
num[0] -= cs;
x = x%cs;
num[y] += x+1;
cs = cs / 10;
} //最後到個位,每個數出現的次數
for(int i=0;i<=x;i++)
return num;
} public static void main(string args)
}
統計數字問題
在王曉東編著的 演算法設計與實驗題解 中看到的這個問題,問題描述如下 一本書的頁碼從自然數1開始順序編碼直到自然數n。書的頁碼按照通常的習慣編排,每個頁碼都不含多餘的前導數字0。例如第6頁用6表示而不是06或006。數字統計問題要求對給定書的總頁碼,計算出書的全部頁碼中分別用到多少次數字0,1,2,...
統計數字問題
問題描述如下 一本書的頁碼從自然數1開始順序編碼直到自然數n。書的頁碼按照通常的習慣編排,每個頁碼都不含多餘的前導數字0。例如第6頁用6表示而不是06或006。數字統計問題要求對給定書的總頁碼,計算出書的全部頁碼中分別用到多少次數字0,1,2,3,9。演算法設計與分析習題 分析 考察由0,1,2.9...
統計數字問題
問題描述 給定乙個整數n,統計從1到n 數字最高位不允許為0 這麼多個數中0,1,2,3,4,5,6,7,8,9分別出現的次數。問題解決 採用遞迴求解統計每乙個數字0,1,2,9出現的次數累加。源 include stdafx.h include int results 10 void count ...