题目链接
https://vjudge.net/problem/51Nod-1116
思路
这里用不到大数运算,用的是数学知识
主要就是要理解题意
代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;
public class Main {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
String s = _08Reader.next();
int len = s.length();
int ans = 0;
int max = 0;
for (int i = 0; i < len; i++) {
char charAt = s.charAt(i);
if (charAt>='0'&& charAt<='9') {
//转换成数字
charAt-='0';
}
if (charAt>='A'&& charAt<='Z') {
//转换成数字
charAt=(char) (charAt - 'A' + 10);
}
if (max < charAt) {
//max=10
max = charAt;
}
//ans=21
ans += charAt;
}
boolean flag = false;
//从11进制开始
for (int i = max+1; i <= 36; i++) {
//这个数在K进制下是K - 1的倍数
if (ans%(i-1)==0) {
flag = true;
System.out.println(i);
break;
}
}
if (flag == false) {
System.out.println("No Solution");
}
}
}
class _08Reader {
static BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
static StringTokenizer tokenizer = new StringTokenizer("");
static String next() throws Exception {
while (!tokenizer.hasMoreTokens()) {
tokenizer = new StringTokenizer(br.readLine());
}
return tokenizer.nextToken();
}
static String nextLine() throws Exception {
return br.readLine();
}
static int nextInt() throws Exception {
return Integer.parseInt(next());
}
}