1. 问题
2. 代码
/*************************************************************************
> File Name: euler22.cpp
> Author:
> Mail:
> Created Time: Mon 12 Apr 2021 01:59:02 PM CST
************************************************************************/
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
int n = 0;
string name[6000];
while (cin >> name[n]) {
n++;
}
sort(name, name + n);
long long ans = 0;
for (int i = 0; i < n; i++) {
int t = 0;
for (int j = 0; j < name[i].size(); j++) {
t += name[i][j] - 'A' + 1;
}
ans += t * (i + 1);
}
cout << ans << endl;
return 0;
}
3. 分析
模拟题,难度不大,有几个技巧需要注意:
技巧1:输入文件处理,输入文件是"MARY","PATRICIA","LINDA"
这种格式,我们把开头和末尾的"
去掉,MARY","PATRICIA","LINDA
,然后在vim中,键入:%s/","/ /g
进行全局替换,这样,输入文件就编程了一组用空格分隔的字符串了,MARY PATRICIA LINDA
。
技巧2:读入一组由空格分隔的字符串
#include <string>
int n = 0;
string name[MAX_LEN];
while (cin >> name[n]) {
n++;
}
这样,读完之后,n存储的就是读入到name中的元素个数。
技巧3:字符串按字典序排序
#include <algorithm>
sort(name, name + n);