CCF ISBN號碼

題目分析:此題就是將前9個數字分別和1...9對應相乘,乘積和對11求模。其中結果是11,最後一位是X,不然爲結果。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		String string = scanner.nextLine();
		int []num = new int[9];
		char ch;
		
		int j = 0;
		for(int i=0;i<string.length()-1;i++) {
			if(i==1||i==5||i==11)
				continue;
			num[j++] = Integer.parseInt(string.charAt(i)+"");
		}
		
		int sum = 0;  //求得前9個數字與1...9對應的乘積和
		for(int i=0;i<9;i++)
			sum += ((i+1)*num[i]);
		
		
        /* *
           分爲四種情況:1, 最後一位爲X, 所求結果爲模爲10  輸出Right
                        2, 最後一位爲X, 所求結果不爲10, 輸出正確值
                        3, 最後一位不爲X, 所求結果模爲10, 輸出正確值
                        4, 最後一位不爲X, 所求結果模不爲10, 輸出Right
                        5, 最後一位不爲X, 所求結果模和最後一位不相等,輸出正確值。
           此時還是挺繞的。

        */

		if(string.charAt(12)=='X') {
			if(sum%11==10)
				System.out.println("Right");
			else {
				for(int i=0;i<9;i++) {
					if(i==0||i==3||i==8)
						System.out.print(num[i]+"-");
					else
						System.out.print(num[i]);
				}
				
				if(sum%11==10)
					System.out.println("X");
				else 
					System.out.println(sum%11);
			}
		}
		else {
			if(sum%11==Integer.parseInt(string.charAt(12)+""))
				System.out.println("Right");
			else {
				for(int i=0;i<9;i++) {
					if(i==0||i==3||i==8)
						System.out.print(num[i]+"-");
					else
						System.out.print(num[i]);
				}
				
				if(sum%11==10)
					System.out.println("X");
				else 
					System.out.println(sum%11);
			}
		}
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章