昨天和今天写的题都比较简单,本来都不想挂,但是还是觉得浅浅记录一下
简单模拟输出即可
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while(t--) {
string s;
cin >> s;
for(int i = 0; i < s.size(); i++) {
if(s[i] == '0' || s[i] == '2' || s[i] == '4' || s[i] == '6' || s[i] == '9') {
cout << s[i];
} else if(s[i] == 'z' && i + 3 < s.size()) {
if(s[i] == 'z' && s[i + 1] == 'e' && s[i + 2] == 'r' && s[i + 3] == 'o')
cout << 0, i += 3;
} else if(s[i] == 't' && i + 2 < s.size()) {
if(s[i] == 't' && s[i + 1] == 'w' && s[i + 2] == 'o')
cout << 2, i += 2;
} else if(s[i] == 'f' && i + 3 < s.size()) {
if(s[i] == 'f' && s[i + 1] == 'o' && s[i + 2] == 'u' && s[i + 3] == 'r')
cout << 4, i += 3;
} else if(s[i] == 's' && i + 2 < s.size()) {
if(s[i] == 's' && s[i + 1] == 'i' && s[i + 2] == 'x')
cout << 6, i += 2;
} else if(s[i] == 'n' && i + 3 < s.size()) {
if(s[i] == 'n' && s[i + 1] == 'i' && s[i + 2] == 'n' && s[i + 3] == 'e')
cout << 9, i += 3;
}
}
cout << endl;
}
return 0;
}
输出第一个最小的非零的数字,如果存在零,只输出一个,然后输出零个数的一半,之后继续从小到大输出即可。
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> num(10, 0);
int odd = 0, sumlen = 0;
for(int i = 0; i < 10; i++) {
cin >> num[i];
if(num[i] % 2 == 1)
odd += 1;
sumlen = sumlen + num[i];
}
if(odd >= 2) {
cout << -1 << endl;
return 0;
}
if(sumlen == num[0]) {
cout << 0 << endl;
return 0;
}
if(odd == 1) {
stack<int> res;
string tar = "";
bool flag = false;
for(int i = 1; i <= 9; i++) {
if(num[i] >= 2) {
for(int j = 1; j <= num[i] / 2; j++) {
tar = tar + to_string(i);
res.push(i);
if(!flag) {
flag = true;
for(int j = 1; j <= num[0] / 2; j++)
tar = tar + "0", res.push(0);
}
}
}
}
for(int i = 0; i <= 9; i++) {
if(num[i] % 2 == 1) {
tar = tar + to_string(i);
}
}
while(!res.empty()) {
tar = tar + to_string(res.top());
res.pop();
}
if(tar.size() == sumlen) {
cout << tar << endl;
} else
cout << -1 << endl;
} else if(odd == 0) {
stack<int> res;
bool flag = false;
for(int i = 1; i <= 9; i++) {
if(num[i] >= 2) {
for(int j = 1; j <= num[i] / 2; j++) {
cout << i;
res.push(i);
if(!flag) {
flag = true;
for(int j = 1; j <= num[0] / 2; j++) {
cout << 0;
res.push(0);
}
}
}
}
}
while(!res.empty()) {
cout << res.top();
res.pop();
}
cout << endl;
}
return 0;
}
简单模拟输出即可
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while(t--) {
string s[3];
for(int i = 0; i < 3; i++)
cin >> s[i];
bool winA = false, winB = false;
if(s[0] == "AAA" || s[1] == "AAA" || s[2] == "AAA")
winA = true;
if(s[0] == "BBB" || s[1] == "BBB" || s[2] == "BBB")
winB = true;
if(s[0][0] == 'A' && s[1][0] == 'A' && s[2][0] == 'A')
winA = true;
if(s[0][1] == 'A' && s[1][1] == 'A' && s[2][1] == 'A')
winA = true;
if(s[0][2] == 'A' && s[1][2] == 'A' && s[2][2] == 'A')
winA = true;
if(s[0][0] == 'B' && s[1][0] == 'B' && s[2][0] == 'B')
winB = true;
if(s[0][1] == 'B' && s[1][1] == 'B' && s[2][1] == 'B')
winB = true;
if(s[0][2] == 'B' && s[1][2] == 'B' && s[2][2] == 'B')
winB = true;
if(s[0][0] == 'A' && s[1][1] == 'A' && s[2][2] == 'A')
winA = true;
if(s[0][2] == 'A' && s[1][1] == 'A' && s[2][0] == 'A')
winA = true;
if(s[0][0] == 'B' && s[1][1] == 'B' && s[2][2] == 'B')
winB = true;
if(s[0][2] == 'B' && s[1][1] == 'B' && s[2][0] == 'B')
winB = true;
if(winA && winB)
cout << "invalid\n";
if(winA && !winB)
cout << "Yes\n";
if(!winA && winB)
cout << "No\n";
if(!winA && !winB)
cout << "draw\n";
}
return 0;
}