#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 分组改写上表。