1. 程式人生 > 其它 >CF656C Without Text 題解

CF656C Without Text 題解

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);
}