题目:http://projecteuler.net/problem=22
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
char all[100000][20];
//string all[100000];
int cmp(const void *one, const void *two)
{
return strcmp( (char *) one, (char *)two);
}
int main()
{
freopen("names.txt", "r", stdin);
int ch;
bool first = true;
int str_num = 0;
int end; // for stand the bit of each string
char str[20];
while ((ch = getchar()) != EOF)
{
//cout << (char)ch << endl;
if (ch == '"')
{
if (first)
{
first = false;
//str = "";
end = 0;
}
else
{
first = true;
str[end] = '\0';
strcpy(all[str_num], str);
//all[str_num] = str;
str_num++;
}
}
else if (ch >= 'A' && ch <= 'Z')
{
str[end] = ch;
end++;
}
}
qsort(all, str_num, sizeof(all[0]), cmp);
cout << str_num << endl;
long long int res = 0;
int temp, j;
for (int i = 0; i < str_num; i++)
{
temp = 0;
j = 0;
while (all[i][j] != '\0')
{
temp += all[i][j] - 'A' + 1;
j++;
}
res += temp *(i + 1);
}
cout << res << endl;
return 0;
}