解題步驟

  1. 先將所有輸入字母轉成數字
  2. 轉成數字之後(base),紀錄最大值(maxBase)
  3. 加總轉成數字之後的東西,之後迴圈a從maxBase開始%0,若true直接輸出a+1,反之輸出到sum%61!=0為止
  4. 這時候輸出such number is impossible!

程式

package OneStar;  
  
import java.util.Scanner;  
  
public class UVA10093 {  
    static int charToBase(char ch){  
        if(Character.isDigit(ch)){  
            return ch-'0';  
        }else if(Character.isUpperCase(ch)){  
            return ch-'A'+10;  
        }else if(Character.isLowerCase(ch)){  
            return ch-'a'+36;  
        }else return 0;  
    }  
    public static void main(String[] args) {  
        Scanner sc = new Scanner(System.in);  
        while(sc.hasNext()){  
            int maxBase=0;  
            int sum = 0;  
            String str = sc.next();  
            for(int i = 0; i < str.length() ; i++){  
                int base = charToBase(str.charAt(i));  
                maxBase = Math.max(maxBase, base); // find the max  
                sum += base;  
  
            }  
            int a ;  
            for(a= maxBase; a < 62;a++){  
                if(sum == 0){
	                System.out.println(2);//因為有輸入資料有可能有0,而這情況輸出題目所要求的最低進位數
	                break;
                }
                if(sum % a == 0){  
                    System.out.println(a+1);  
                    break;                
                }  
  
            }  
            if(a == 62) {  
                System.out.println("such number is impossible!");  
            }  
  
        }  
    }  
}