範例程式碼 uva10093

//uva10093
#include <iostream>
#include <string>
#include <unordered_map>
#include <algorithm>
using namespace std;

int main() {
	int n, temp, max_num, total;
	string s, output;
	unordered_map<char, int> m;

	for (int i = 0; i < 10; ++i)
		m['0' + i] = i;
	for (int i = 0; i < 26; ++i)
		m['A' + i] = 10 + i;
	for (int i = 0; i < 26; ++i)
		m['a' + i] = 36 + i;
	m['-'] = 0;

	while (cin >> s) {
		n = s.length();
		total = 0;
		max_num = 1;
		for (int i = 0; i < n; ++i) {
			temp = m[ s[n - i - 1] ];
			total += temp;
			max_num = max(max_num, temp);
		}
		
		output = "such number is impossible!";
		for (int i = max_num + 1; i <= 62; ++i) {
			if (total % (i - 1) == 0) {
				output = to_string(i);
				break;
			}
		}

		cout << output << endl;
	}


	return 0;
}