A - Square Inequality
题意:
If A^2+ B^2 < C^2 holds, print Yes; otherwise, print No.
int main() { int a, b, c; cin >> a >> b >> c; if (a * a + b * b < c * c) { scYes; } else scNo; }
B - Intersection
题意:给你t个区间【Ai,Bi】,并且规定了Ai<x<Bi,求最后x可以取几个值。
int main() { int t, i, j, n; int min1 = 0x3f3f3f3f, max1 = 0; cin >> t; for (i = 0; i < 2*t; i++) { int d; cin >> d; if (i < t) { max1 = max(max1, d); } else { min1 = min(min1, d); } } cout << max((min1 - max1)+1, 0) << endl; }在这里插入代码片
C - IPFL
题意:给你个一个字符串,有q次操作,操作1是交换输入的两个下对应的字符串里的字母,操作2是反转前半部分字符串和后半部分字符串。
思路:操作次数很大,模拟会t,找规律,模拟的想把一个字符串分为两半,这样交换的操作也可以分解,反转的操作也可以分解。
int main() { std::ios::sync_with_stdio(false); cin.tie(NULL); int i,n, q, d1, d2, d3; string s1,ans1,ans2; cin >> n >> s1 >> q; int dd = s1.length(); for (i = 0; i < s1.length(); i++) { if (i < s1.length() / 2) ans1 += s1[i]; else ans2 += s1[i]; } int flag = 0; for (i = 0; i < q; i++) { cin >> d1 >> d2 >> d3; if (d1 == 1) { if (d2 <= n) { if (d3 > n) { if (flag == 0) { d3 -= 1, d2 -= 1; swap(ans1[d2], ans2[d3 - n]); } else { d3 -= 1, d2 -= 1; swap(ans2[d2], ans1[d3 - n]); } } else { d2 -= 1, d3 -= 1; if (flag == 0)swap(ans1[d2], ans1[d3]); else swap(ans2[d2], ans2[d3]); } } else { d3 -= 1, d2 -= 1; if (flag == 0)swap(ans2[d2 - n], ans2[d3 - n]); else swap(ans1[d2 - n], ans1[d3 - n]); } } else if (d1 == 2) { if (flag == 0){ flag = 1; } else flag = 0; } } if (flag == 0) { cout << ans1 << ans2 << endl; } else { cout << ans2 << ans1 << endl; } }