#3942. [GESP2403 三级] 字母求和
[GESP2403 三级] 字母求和
字母求和
题目描述
⼩杨同学发明了⼀种新型密码,对于每⼀个⼩写英⽂字母,该⼩写字母代表了⼀个正整数,即该字母在字母顺序中 的位置,例如字母 a 代表了正整数 1,字母 b 代表了正整数 2;对于每⼀个⼤写英⽂字母,该⼤写字母代表了⼀个负 整数,即该字母的 ASCII 码的相反数,例如字母 A 代表了正整数 -65。⼩杨同学利⽤这种⽅式对⼀个整数进⾏了加密 并得到了⼀个由⼤写字母和⼩写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例 如 aAc 对应的加密前的整数为 1+(-65)+3=-61。 对于给定的字符串,请你计算出它对应的加密前的整数是多少。
输入格式
第⼀⾏⼀个正整数 ,表⽰字符串中字母的个数。 第⼆⾏⼀个由⼤写字母和⼩写字母的字符串 ,代表加密后得到的字符串。
输出格式
输出⼀⾏⼀个整数,代表加密前的整数。 3.1.4 样例1 1 3 2 aAc 1 -61 对于全部数据,保证有 。 3.1.5 参考程序 1 #include 2 #include <assert.h> 3 #include 4 #include 5 #include 6 using namespace std; 7 const int N = 100005; 8 char str[N]; 9 int main() { 10 11 int n; 12 cin >> n; 13 cin >> str; 14 assert(n == strlen(str)); 15 16 int ans = 0; 17 for (int i = 0; i < n; i ++) { 18 if (str[i] >= 'a' && str[i] <= 'z') 19 ans += str[i] - 'a' + 1; 20 else if (str[i] >= 'A' && str[i] <= 'Z') 21 ans -= str[i]; 22 else 23 assert(false); 24 } 25 cout << ans << endl; 26 return 0; 27 }
样例输入 #1
1 3
2 aAc
1 -61
样例输出 #1
数据范围
见题目描述
知识点与难度
本题涉及的知识点从属于 GESP 3级,难度等级:⭐⭐ 。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 / 特殊性质 |
| 2 | 15 | 9~11 | Hack |
| 3 | 30 | 12~20 | 中大规模 |
| 4 | 25 | 21~25 | 随机回归 |
生测试数据后,按实际 subtask 分组改写上表。