洛谷P1055 之 ISBN 号码的Java实现

题目来源

P1055 [NOIP2008 普及组] ISBN 号码

AC代码

import java.util.Scanner;

public class Main {
     

	public static void main(String[] args) {
     
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		String ISBN = scan.next();
		char[] arr = ISBN.toCharArray();
		int num = 0;
		int count = 0;
		for(int i = 0; i < arr.length-1; i++) {
     
			if(arr[i] != '-') {
     
				count++;
				num = num + count*(Integer.parseInt(String.valueOf(arr[i])));
			}
		}
		int result = num % 11;
		if(result == 10) {
     
			if(arr[arr.length-1]=='X')
				System.out.print("Right");
			else {
     
				for(int i = 0; i < arr.length; i++) {
     
					if(i == arr.length-1)
						System.out.print("X");
					else
						System.out.print(arr[i]);
				}
			}	
			//余数不为10
		}else {
     
			int judge = 0;
			if(arr[arr.length-1]!='X') {
     
				if(Integer.parseInt(String.valueOf(arr[arr.length-1]))==result) {
     
					judge = 1;
					System.out.print("Right");
					}
			}
			if(judge == 0){
     
				for(int i = 0; i < arr.length; i++) {
     
					if(i == arr.length-1)
						System.out.print(result);
					else
						System.out.print(arr[i]);
				}
			}
		}
		scan.close();
	}

}

值得注意的点:

  1. 当余数为10时,如果与识别码不符合,最后要输出X而不是数字。
  2. 当余数不为10时,要考虑到原始输入可能是X,不能直接将X转化为整数,我们要做一个判断。

你可能感兴趣的:(OJ,算法,java)