约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个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;
}