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