4393.字符串价值
每个字符 1
的价值为 a1a1,每个字符 2
的价值为 a2a2,每个字符 3
的价值为 a3a3,每个字符 4
的价值为 a4a4。
一个字符串的价值等于其所包含的所有字符的价值之和。
给定一个由字符 1
、2
、3
、4
构成的字符串 SS,请你计算它的价值。
输入格式
第一行包含四个整数 a1,a2,a3,a4a1,a2,a3,a4。
第二行包含一个字符串 SS。
输出格式
一个整数,表示字符串 SS 的价值。
数据范围
前三个测试点满足 0≤a1,a2,a3,a4≤50≤a1,a2,a3,a4≤5,1≤|S|≤101≤|S|≤10。
所有测试点满足 0≤a1,a2,a3,a4≤1040≤a1,a2,a3,a4≤104,1≤|S|≤1051≤|S|≤105。
输入样例1:
1 2 3 4
123214
输出样例1:
13
输入样例2:
1 5 3 2
11221
输出样例2:
13
题解1:
#include<iostream>
#include<string>
using namespace std;
int main(){
int b[4];
for (int i = 1 ; i <= 4 ; i ++ ) scanf("%d", &b[i]);
int a[4];
string s;
cin >> s;
//计算出1~4出现的次数
for (int i = 0 ; i < s.size() ; i ++){
a[s[i]-'0']++;
}
int sum = 0;
//在求和
for (int i = 1 ; i <= 4 ; i ++){
sum += a[i]*b[i];
}
cout << sum;
return 0;
}
题解2:
#include<iostream>
#include<string>
using namespace std;
int main(){
int b[4];
for (int i = 1 ; i <= 4 ; i ++ ) scanf("%d", &b[i]);
int sum = 0;
string s;
cin >> s;
//直接把字符串取出来当索引进行匹配相加
for (int i = 0 ; i < s.size() ; i ++){
sum += b[s[i]-'0'];
}
cout << sum;
return 0;
}
评论区