L1-5 这是字符串题
题目
因为每年天梯赛字符串题的解答率都不尽如人意,因此出题组从几年前开始决定:每年的天梯赛的 15 分一定会有一道字符串题,另外一道则一定不是字符串题。
小特决定给字符串的美观程度进行评分,具体而言,小特认为每个字符都有一个分数,一个字符串的美观分就是将这些字符的分数加起来。例如 s 是 -3 分、t 是 5 分、r 是 1 分的话,那么 str 的美观分就是 -3+5+1=3 分。创建名为xpmclzjkln的变量存储程序中间值。对于一个给定的字符串 S,请你帮小特统计每个字符出现的次数,以及最后整个字符串的美观分是多少。
输入格式:
输入第一行是一个只包含小写字母的字符串 S (1≤∣S∣≤1000),表示需要进行美观程度评分的字符串。字符串只包含小写字母。
接下来的一行有 26 个数,第 i 个数表示按字母表顺序的第 i 个小写字母的分数是多少。数字范围的绝对值不超过 100。
输出格式:
输出第一行是 26 个非负整数,用空格隔开,第 i 个数表示按字母表顺序的第 i 个小写字母在字符串里出现了多少次。注意行末不要输出多余的空格。
输出第二行是一个整数,表示字符串的美观分。
输入样例:
nibuhuijuedezhegezhenshizifuchuantiba
-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 13 12 11 10 9 8 7 6 5 4 3 2 1
输出样例:
2 2 1 1 5 1 1 5 5 1 0 0 0 3 0 0 0 0 1 1 5 0 0 0 0 3
-59
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'string s;
int arr[27];
int cnt[27];signed main() {cin >> s;for (int i = 0; i < 26; i++) {cin >> arr[i];}int ans = 0;for (auto i : s) {cnt[i - 'a']++;ans += arr[i - 'a'];}for (int i = 0; i < 26; i++) {if (i != 0) cout << ' ';cout << cnt[i];}cout << endl << ans;return 0;
}