// UVa 153 - Permalex import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); BigInteger[] fact = new BigInteger[31]; fact[0] = BigInteger.ONE; for (int i = 1; i < 31; i++) fact[i] = fact[i - 1].multiply(BigInteger.valueOf(i)); String l = scanner.nextLine(); while (l.charAt(0) != '#') { int[] count = new int[256]; for (char c = 'a'; c <= 'z'; c++) count[c] = 0; for (int i = 0; i < l.length(); i++) count[l.charAt(i)]++; BigInteger b4 = BigInteger.ZERO; for (int i = 0; i < l.length(); i++) { for (char c = 'a'; c < l.charAt(i); c++) if (count[c] > 0) { count[c]--; BigInteger m = BigInteger.ONE; int s = 0; for (char d = 'a'; d <= 'z'; d++) { if (count[d] > 0) { m = m.multiply(fact[count[d]]); s += count[d]; } } count[c]++; b4 = b4.add(fact[s].divide(m)); } count[l.charAt(i)]--; } b4 = b4.add(BigInteger.ONE); String sol = b4.toString(); while (sol.length() < 10) sol = " " + sol; System.out.println(sol); l = scanner.nextLine(); } } }
Saturday, June 6, 2015
UVa 153 - Permalex
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment