iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 1
1
自我挑戰組

資工的日常系列 第 1

CPE考題 Digit Counting

  • 分享至 

  • xImage
  •  

2017/05/23 CPE
考題連結:
https://cpe.cse.nsysu.edu.tw/cpe/file/attendance/problemPdf/1225.pdf

大概題意:
給定一個數字N (1 < N < 10000),從1開始數到N。統計數字0123456789出現的次數。
ex:N=12 開始數123456789101112 然後0到9個別出現 1 5 2 1 1 1 1 1 1 1次。
input:
第一行:要解幾組,不超過20的整數 第二行開始:數字N(1 < N < 10000)
output:
每組數字N,0123456789出現的次數以空白隔開

自己的解題程式碼

import java.util.Arrays;
import java.util.Scanner;
//import 要用的工具,陣列和Scanner

public class DigitCounting {
	static int n[];//暫時儲存0~9個別出現次數的陣列
	public static void main(String[] args){
		Scanner scanner=new Scanner(System.in);
		int set,num;//set總共組數 num暫存數字N
		int[] N=new int[20];//儲存不超過20組的數字N
		set=scanner.nextInt();//第一行總組數
        //根據組數丟set個數字N進陣列N[]
		for(int i=0;i<set;i++){
			N[i]=scanner.nextInt();
		}
        //set for-loop   組數的loop
		for(int i=0;i<set;i++){
			num=N[i];//這組要算的數字N
			n=new int[10];//new 一個暫存0~9個別出現次數的陣列
			//one case loop   一組內要作的事,從1開始數到數字N
			for(int x=1;x<=num;x++){
				calculate(x);//把目前數到的數字拿去統計
				//calculate one case loop
			}
            //印出這個陣列的結果
			printArray();
		}
		scanner.close();
	}
	//統計數字用的方法
	static void calculate(int N){
		String s=String.valueOf(N);//把數字變成字串拆解
        //拆成個別位數作統計
        //也可以用return回報結果,這邊用static變數
		for(int y=0;y<s.length();y++){
			char countNum=s.charAt(y);
			switch(countNum){
				case '1':
					n[1]++;
					break;
				case '2':
					n[2]++;
					break;
				case '3':
					n[3]++;
					break;
				case '4':
					n[4]++;
					break;
				case '5':
					n[5]++;
					break;
				case '6':
					n[6]++;
					break;
				case '7':
					n[7]++;
					break;
				case '8':
					n[8]++;
					break;
				case '9':
					n[9]++;
					break;
				case '0':
					n[0]++;
					break;
			}
		}
	}
	static void printArray(){
        //for-each迴圈
		for(int i:n){
			System.out.print(i+" ");
		}
		System.out.println();
	}
}

測試資料:https://cpe.cse.nsysu.edu.tw/cpe/file/attendance/problemPdf/testData/uva1225a.php
結果:https://ithelp.ithome.com.tw/upload/images/20171220/201078668EiAE0jfHc.png


第一天先這樣好了,這題解法可以更精簡,但我是寫自己目前想到的方法/images/emoticon/emoticon13.gif


下一篇
CPE考題 Rockabye Tobby
系列文
資工的日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言