A
link
其实,有人赢比赛,就有人输比赛,一加一减,不管进行多少场比赛,最后所有人的分数和一定是\(0\)。
那么知道\(n-1\)个人的分数和,就可以知道第\(n\)个人的了。
点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n;
int sum;
int a[105];
signed main(){
cin >> n;
for(int i = 1;i < n;++ i)
cin >> a[i],sum += a[i];
cout << -1*sum;
return 0;
}
B
link
存下来每个字母有多少个,字符串中有的字母中是\(i\)个的字母是否为\(0\)或\(2\)个。
点击查看代码
#include<bits/stdc++.h>
using namespace std;
char s[105];
int n;
map<char,int> mp;
int f[30];
signed main(){
cin >> s+1;
n = strlen(s+1);
for(int i = 1;i <= n;++ i)
f[s[i]-'a'] = 1,mp[s[i]]++;
for(int i = 1;i <= n;++ i){
int g = 0;
for(int j = 0;j < 26;++ j){
if(f[j]){
if(mp[j+'a'] == i) g++;
}
}
if(g != 0&&g != 2){
cout << "No";
return 0;
}
}
cout << "Yes";
return 0;
}
C
link
顺着找。
先找到第一个\(t_1\),再在这个位置往后找第一个\(t_2\),然后在\(t_2\)的位置往后找\(t_3\)。
不管从那个位置开始找不到了,都不行。
但是如果找不到\(t_3\),如果\(t_3\)是\(X\),就可以不找到。
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
char s[100005];
char t[5];
int sl,tl;
signed main(){
cin >> s+1 >> t;
sl = strlen(s+1);
int w = 0;
for(int i = 1;i <= sl;++ i){
if(s[i] == t[0]-'A'+'a'){
w = i;
break;
}
}
if(w == 0){
cout << "No";
return 0;
}
int ww = 0;
for(int i = w+1;i <= sl;++ i){
if(s[i] == t[1]-'A'+'a'){
ww = i;
break;
}
}
if(ww == 0){
cout << "No";
return 0;
}
int w3 = 0;
for(int i = ww+1;i <= sl;++ i){
if(s[i] == t[2]-'A'+'a'){
w3 = i;
break;
}
}
if(w3 == 0&&t[2] != 'X'){
cout << "No";
return 0;
}
cout << "Yes";
return 0;
}