統計數字問題

 問題描述:一本書的頁碼從自然數1開始計數,直到自然數n。書的頁碼按照通常的習慣編排,每個頁碼都不包含多餘的前導數字0。例如,第6頁用數字6表示,而不是06或006等。數字計數問題要求對給定書的總頁碼n,計算出書的全部頁碼中分別用到多少次數字0,1,2,...,9。

    解題思路:

    本題關鍵在於將每一頁碼的數字進行分解,這種方式可以利用整數的除法和對10取餘計算。例如,對於數的分解過程可以採用如下方式進行:




import java.util.Scanner;


public class Section1_1 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
Count c=new Count();
int number=scan.nextInt();
for(int i=0;i<c.count(number).length;i++){
System.out.println(i+":   "+c.count(number)[i]);
}


}
}
/**
 * 用於統計翻頁時出現的0——9這幾個數之間的個數
 * 算法思路:將一個整數不斷取餘,並對擁有該下標的數組進行加1運算(代表出現一次),
 * 然後再除以10取商繼續上述步驟,相當於將每一位都當做是個位的數字進行處理,就可以
 * 統計出0——9中所有數字出現的次數
 * @author LiuYong
 * @version 2013-9-1  下午4:07:18
 */
class Count{
int[] count=new int[10];
int temp=0;
public int[] count(int number){
for(int i=0;i<count.length;i++){
count[i]=0;
}
for(int i=1;i<=number;i++){
temp=i;
while(temp!=0){
count[temp%10]++;
temp/=10;
}
}
return count;
}
}

發佈了16 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章