解題步驟
- 先將所有輸入字母轉成數字
- 轉成數字之後(base),紀錄最大值(maxBase)
- 加總轉成數字之後的東西,之後迴圈a從maxBase開始%0,若true直接輸出a+1,反之輸出到sum%61!=0為止
- 這時候輸出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!");
}
}
}
}