The seventh day of intensive training at Nanjing Foreign Language School.
第一题
#include <bits/stdc++.h>
using namespace std;
int n, k, m, t;
int main() {
cin >> n;
cout << "+------------------------+" << endl;
if (n >= 4) {
k = (n - 4) % 3;
m = (n - 4) / 3 + 1;
} else {
k = n;
}
for (int c = 1; c <= 4; c++) {
if (c == 3) {
if (k >= 3 || m >= 1) {
cout << "|O.......................|" << endl;
} else {
cout << "|#.......................|" << endl;
}
continue;
}
cout << "|";
if (k > 0) {
t = m + 1;
k--;
} else {
t = m;
}
for (int i = 1; i <= t; i++) {
cout << "O.";
}
int d = 11 - t;
for (int i = 1; i <= d; i++) {
cout << "#.";
}
if (c == 1) {
cout << "|D|)";
} else {
cout << "|.|";
}
if (c == 4) {
cout << ")";
}
cout << endl;
}
cout << "+------------------------+";
return 0;
}
第二题,定义初始值是定义错位置了,导致WA
#include <bits/stdc++.h>
using namespace std;
int n;
char s[101000], a;
int x, ans1, ans2, wans;
bool b = false;
int main() {
cin >> n;
ans1 = INT_MIN;
ans2 = INT_MAX;
for (int i = 1; i <= n; i++) {
int len = 0;
cin >> s;
cin >> x;
cin >> a;
len = strlen(s);
if (a == 'N') {
if (len == 1) {
len++;
if (s[0] == '<') {
s[0] = '>';
s[1] = '=';
} else {
s[0] = '<';
s[1] = '=';
}
} else {
if (s[0] == '<') {
s[0] = '>';
} else {
s[0] = '<';
}
len--;
}
}
if (len == 1) {
if (s[0] == '>') {
b = true;
ans1 = max(ans1, x + 1);
} else {
ans2 = min(ans2, x - 1);
}
} else {
if (s[0] == '>') {
b = true;
ans1 = max(ans1, x);
} else {
ans2 = min(ans2, x);
}
}
}
if (ans1 > ans2) {
cout << "Impossible";
} else {
if (!b) {
cout << "-2000000000";
} else {
cout << min(ans1, ans2);
}
}
return 0;
}
第三题
#include <bits/stdc++.h>
using namespace std;
int n, f1, f2, ans[50];
char s1[500], s2[500];
char y, y2, y3, y4;
int main() {
cin >> s1 >> s2 >> n;
int len1 = strlen(s1), len2 = strlen(s2);
for (int i = 0; i < len1; i++) {
if (s1[i] == 'A' && s1[i + 1] == 'C') {
ans[0]++;
}
}
for (int i = 0; i < len2; i++) {
if (s2[i] == 'A' && s2[i + 1] == 'C') {
ans[1]++;
}
}
y = s1[0], y2 = s1[len1 - 1];
y3 = s2[0], y4 = s2[len2 - 1];
for (int i = 2; i <= n; i++) {
if (y2 == 'A' && y3 == 'C') {
ans[i]++;
}
y2 = y4;
char wy;
swap(y, y3);
ans[i] += ans[i - 1] + ans[i - 2];
}
cout << ans[n];
return 0;
}
第四题,离谱的排序
#include <bits/stdc++.h>
using namespace std;
const long long M = 31536000;
long long n, t, ans;
struct adw {
long long a, b;
} c[101000];
bool cmp(const adw a, const adw b) { return (long long)a.a * b.b < (long long)a.b * b.a; }
int main() {
cin >> n;
for (long long i = 1; i <= n; i++) {
cin >> c[i].a >> c[i].b;
}
sort(c + 1, c + 1 + n, cmp);
for (long long i = 1; i <= n; i++) {
ans = t * c[i].b % M + c[i].a % M;
t += ans % M;
}
cout << t % M;
return 0;
}