CF656C Without Text 题解
Content
输入一个字符串 \(s\),遍历每一个字符,如果这个字符是小写字母,那么答案就加上这个字母的字母表序;否则,如果这个字符是小写字母,那么答案就减去这个字母的字母表序。求最后的答案。
- 字母表序:大写或小写字母在字母表中的位置。
数据范围:\(1\leqslant |s|\leqslant 50\),保证仅包含大小写字母和 .
。
Solution
直接暴力模拟一下即可,主要难的地方在于读懂题目里给你的图。是大写字母就加上去,是小写字母就减去。
给大家两个公式:
设当前扫到的字符为 \(s_i\)(在下面的公式中,它所代表的数值即为它的 \(\texttt{ASCII}\) 码)。
- 如果是大写字母,那么它的字母表序就是 \(s_i-64\)。
- 如果是小写字母,那么它的字母表序就是 \(s_i-96\)。
Code
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
using namespace std;
string s;
int n, ans;
int main() {
cin >> s;
n = s.size();
for(int i = 0; i < n; ++i) {
if(s[i] >= 'A' && s[i] <= 'Z') ans += (s[i] - 64);
if(s[i] >= 'a' && s[i] <= 'z') ans -= (s[i] - 96);
}
printf("%d", ans);
}