4610: 【GESP2403三级】字母求和
内存限制:64 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:12
解决:7
题目描述
⼩杨同学发明了一种新型密码,对于每一个小写英文字母,该小写字母代表了一个正整数,即该字母在字母顺序中的位置,例如字母 $a$ 代表了正整数 $1$,字母 $b$ 代表了正整数 $2$;对于每一个大写英文字母,该大写字母代表了一个负整数,即该字母的 ASCII 码的相反数,例如字母 A 代表了整数 $-65$。小杨同学利用这种方式对一个整数进行了加密并得到了一个由大写字母和小写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例如 $aAc$ 对应的加密前的整数为 $1+(-65)+3=-61$。
对于给定的字符串,请你计算出它对应的加密前的整数是多少。
对于给定的字符串,请你计算出它对应的加密前的整数是多少。
输入
第一行一个正整数$n$ ,表示字符串中字母的个数。
第二行一个由大写字母和小写字母的字符串$T$ ,代表加密后得到的字符串。
第二行一个由大写字母和小写字母的字符串$T$ ,代表加密后得到的字符串。
输出
输出一行一个整数,代表加密前的整数。
样例输入 复制
3
aAc
样例输出 复制
-61
提示
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 100005;
char str[N];
int main() {
int n;
cin >> n;
cin >> str;
int ans = 0;
for (int i = 0; i < n; i ++) {
if (str[i] >= 'a' && str[i] <= 'z')
ans += str[i] - 'a' + 1;
else if (str[i] >= 'A' && str[i] <= 'Z')
ans -= str[i];
}
cout << ans << endl;
return 0;
}