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);
}
posted @ 2021-12-21 20:11  Eason_AC  阅读(51)  评论(0)    收藏  举报