public class Main
{
static final int MAX_LENGTH = 13; // about the biggest that will fit into long, use BigInteger for bigger values
static long pow(long a, int b)
{
if (b == 0) return 1;
if (b == 1) return a;
if (b%2 == 0) return pow(a*a, b/2); //even a=(a^2)^b/2
else return a*pow(a*a, b/2); //odd a=a*(a^2)^b/2
}
static long printValue
(String s
) {
long result = 0;
for (int i = 0; i < s.length(); i++)
result += pow(27, MAX_LENGTH - i - 1)*(1 + s.charAt(i) - 'a');
System.
out.
printf("%-20s = %20d\n", s, result
); return result;
}
public static void main
(String[] args
) {
printValue("a");
printValue("aa");
printValue("aaa");
printValue("aaaa");
printValue("aaaaa");
printValue("abacus");
printValue("abbreviation");
printValue("account");
printValue("accuracy");
printValue("announcement");
printValue("z");
}
}
cHVibGljIGNsYXNzIE1haW4KewogICBzdGF0aWMgZmluYWwgaW50IE1BWF9MRU5HVEggPSAxMzsgLy8gYWJvdXQgdGhlIGJpZ2dlc3QgdGhhdCB3aWxsIGZpdCBpbnRvIGxvbmcsIHVzZSBCaWdJbnRlZ2VyIGZvciBiaWdnZXIgdmFsdWVzCiAgIHN0YXRpYyBsb25nIHBvdyhsb25nIGEsIGludCBiKQogICB7CiAgICAgIGlmIChiID09IDApICAgcmV0dXJuIDE7CiAgICAgIGlmIChiID09IDEpICAgcmV0dXJuIGE7CiAgICAgIGlmIChiJTIgPT0gMCkgcmV0dXJuICAgcG93KGEqYSwgYi8yKTsgLy9ldmVuIGE9KGFeMileYi8yCiAgICAgIGVsc2UgICAgICAgICAgcmV0dXJuIGEqcG93KGEqYSwgYi8yKTsgLy9vZGQgIGE9YSooYV4yKV5iLzIKICAgfQogICAKICAgc3RhdGljIGxvbmcgcHJpbnRWYWx1ZShTdHJpbmcgcykKICAgewogICAgICBsb25nIHJlc3VsdCA9IDA7CiAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgaSsrKQogICAgICAgICByZXN1bHQgKz0gcG93KDI3LCBNQVhfTEVOR1RIIC0gaSAtIDEpKigxICsgcy5jaGFyQXQoaSkgLSAnYScpOwogICAgICBTeXN0ZW0ub3V0LnByaW50ZigiJS0yMHMgPSAlMjBkXG4iLCBzLCByZXN1bHQpOwogICAgICByZXR1cm4gcmVzdWx0OwogICB9CiAgIAogICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQogICB7CiAgICAgIHByaW50VmFsdWUoImEiKTsKICAgICAgcHJpbnRWYWx1ZSgiYWEiKTsKICAgICAgcHJpbnRWYWx1ZSgiYWFhIik7CiAgICAgIHByaW50VmFsdWUoImFhYWEiKTsKICAgICAgcHJpbnRWYWx1ZSgiYWFhYWEiKTsKICAgICAgcHJpbnRWYWx1ZSgiYWJhY3VzIik7CiAgICAgIHByaW50VmFsdWUoImFiYnJldmlhdGlvbiIpOwogICAgICBwcmludFZhbHVlKCJhY2NvdW50Iik7CiAgICAgIHByaW50VmFsdWUoImFjY3VyYWN5Iik7CiAgICAgIHByaW50VmFsdWUoImFubm91bmNlbWVudCIpOwogICAgICBwcmludFZhbHVlKCJ6Iik7CiAgIH0KfQ==