约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。
约翰不在乎字母大小写(也就是说字母A和a的完美度相同)。给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77。
Input
输入一个字符串S(S的长度 <= 10000),S中没有除字母外的其他字符。
Output
由你将1-26分配给不同的字母,使得字符串S的完美度最大,输出这个完美度。
Sample Input
dad
Sample Output
77
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char a[10010]; int i, len, j, t; int b[10010]; scanf("%s", a); len = strlen(a); memset(b,0,sizeof(b)); for(i = 0; i < len; i++) { if(a[i] == 'a' || a[i] == 'A') { b[1]++; } if(a[i] == 'b' || a[i] == 'B') { b[2]++; } if(a[i] == 'c' || a[i] == 'C') { b[3]++; } if(a[i] == 'd' || a[i] == 'D') { b[4]++; } if(a[i] == 'e' || a[i] == 'E') { b[5]++; } if(a[i] == 'f' || a[i] == 'F') { b[6]++; } if(a[i] == 'g' || a[i] == 'G') { b[7]++; } if(a[i] == 'h' || a[i] == 'H') { b[8]++; } if(a[i] == 'i' || a[i] == 'I') { b[9]++; } if(a[i] == 'j' || a[i] == 'J') { b[10]++; } if(a[i] == 'k' || a[i] == 'K') { b[11]++; } if(a[i] == 'l' || a[i] == 'L') { b[12]++; } if(a[i] == 'm' || a[i] == 'M') { b[13]++; } if(a[i] == 'n' || a[i] == 'N') { b[14]++; } if(a[i] == 'o' || a[i] == 'O') { b[15]++; } if(a[i] == 'p' || a[i] == 'P') { b[16]++; } if(a[i] == 'q' || a[i] == 'Q') { b[17]++; } if(a[i] == 'r' || a[i] == 'R') { b[18]++; } if(a[i] == 's' || a[i] == 'S') { b[19]++; } if(a[i] == 't' || a[i] == 'T') { b[20]++; } if(a[i] == 'u' || a[i] == 'U') { b[21]++; } if(a[i] == 'v' || a[i] == 'V') { b[22]++; } if(a[i] == 'w' || a[i] == 'W') { b[23]++; } if(a[i] == 'x' || a[i] == 'X') { b[24]++; } if(a[i] == 'y' || a[i] == 'Y') { b[25]++; } if(a[i] == 'z' || a[i] == 'Z') { b[0]++; } } for(i = 0; i < 25; i++) { for(j = 0; j < 26 - i - 1; j++) { if(b[j] < b[j+1]) { t = b[j]; b[j] = b[j+1]; b[j+1] = t; } } } int sum = 0; for(i = 0; i < 26; i++) { sum = (26 - i) * b[i] + sum; } printf("%d\n", sum); return 0; }