[Uva]1225 - Digit Counting
這也是2017/5/23的CPE第一題考題中文大意
第一行輸入一個測試次數 time
給一個整數N(範圍:1< N <10000)
假設N = 13
請計算出0 ~ 9出現的次數
N = 13 => 12345678910111213
要統計的數字 0 1 2 3 4 5 6 7 8 9
出現次數 1 6 2 2 1 1 1 1 1 1
N = 24 => 123456789101112131415161718192021222324
要統計的數字 0 1 2 3 4 5 6 7 8 9
出現次數 2 13 8 3 3 2 2 2 2 2
為了計算數量所以宣告一個 arrcount 的陣列
每統計完一個N後要記得歸零陣列,不然數字會一直往上加喔
程式碼如下
import java.util.*;
import java.lang.*;
public class DigitCounting {
public static void main(String[] args) {
int N ; //待測數字
int time; //測試次數
long arrcount[] = new long[10]; //統計數量的陣列
Scanner sc = new Scanner(System.in);
time = sc.nextInt(); //輸入次數
for(int i = 0;i < time;i++)
{
N = sc.nextInt(); //輸入待測數字
if(N > 1 && N < 10000) //判斷N是否在範圍內
{
for(int j = 1;j <= N;j++)
//開始計算數量,從1開始,每個數的個位、十位、百位...分開統計
{
if(j < 10)
{
arrcount[j]++;
}
if(j >= 10 && j < 100)
{
arrcount[j/10]++;
arrcount[j%10]++;
}
if(j >= 100 && j < 1000)
{
arrcount[j/10/10]++;
arrcount[j/10%10]++;
arrcount[j%10]++;
}
if(j >= 1000 && j < 10000)
{
arrcount[j/1000]++;
arrcount[j/100%10]++;
arrcount[j/10%10]++;
arrcount[j%10]++;
}
}
for(int k = 0;k < arrcount.length;k++)
//輸出陣列中統計完的結果
{
if(k == (arrcount.length-1))
{
System.out.println(arrcount[k]);
//最後一個數字要換行
}
else
{
System.out.print(arrcount[k] + " ");
//每個數字之間要留空白
}
}
for(int x = 0;x < arrcount.length;x++) //陣列歸零
{
arrcount[x] = 0;
}
}
}
}
}
沒有留言:
張貼留言