PTA 520 钻石争霸赛 2020
比赛链接:https://pintia.cn/problem-sets/1259839299727368192/problems/type/7
7-1 考试周 (5分)
代码一
#include <bits/stdc++.h> using namespace std; int main() { int a, b; cin >> a >> b; printf("%d/%.1f=%d\n", a, 1.0 * a / b, b); }
代码二
#include <bits/stdc++.h> using namespace std; int main() { int a, b; cin >> a >> b; for (int i = 1; i <= 300; i++) { if (i * b >= 10 * a) { printf("%d/%.1f=%d\n", a, i / 10.0, b); break; } } }
7-2 真的恭喜你 (10分)
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; if (n >= 90) printf("gong xi ni kao le %d fen!\n", n); else printf("kao le %d fen bie xie qi!\n", n); }
7-3 平均成绩 (10分)
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; int all = 0, boy = 0, girl = 0; int boy_n = 0, girl_n = 0; for (int i = 0; i < n; i++) { int sex, score; cin >> sex >> score; if (sex == 1) boy += score, ++boy_n; else girl += score, ++girl_n; all += score; } printf("%.1f ", 1.0 * all / n); if (boy_n == 0) printf("X "); else printf("%.1f ", 1.0 * boy / boy_n); if (girl_n == 0) printf("X"); else printf("%.1f", 1.0 * girl / girl_n); }
7-4 古风A+B (15分)
#include <bits/stdc++.h> using namespace std; int main() { int a, b; cin >> a >> b; for (char c : to_string(a + b)) cout << c << "\n"; }
7-5 猜近似数字 (15分)
代码一
#include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; string t; while (cin >> t and t != "-1") { if (t.size() != s.size()) { cout << "No" << "\n"; continue; } int cnt = 0; for (int i = 0; i < t.size(); i++) { if (abs(t[i] - s[i]) == 1) ++cnt; else if (abs(t[i] - s[i]) > 1) { cnt = 2; break; } } cout << (cnt <= 1 ? "Yes" : "No") << "\n"; } }
代码二
#include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; map<string, bool> mp; mp[s] = true; for (int i = 0; i < s.size(); i++) { char t = s[i]; if (t - 1 >= '0') { s[i] = t - 1; mp[s] = true; } if (t + 1 <= '9') { s[i] = t + 1; mp[s] = true; } s[i] = t; } string t; while (cin >> t and t != "-1") cout << (mp[t] ? "Yes" : "No") << "\n"; }
7-6 随机输一次 (20分)
#include <bits/stdc++.h> using namespace std; map<string, string> win = { {"ChuiZi", "Bu"}, {"JianDao", "ChuiZi"}, {"Bu", "JianDao"} }, lose = { {"ChuiZi", "JianDao"}, {"JianDao", "Bu"}, {"Bu", "ChuiZi"} }; int main() { int n; cin >> n; int a[n] = {}; for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < n; i = (i + 1) % n) { for (int j = 0; j < a[i]; j++) { string s; cin >> s; if (s == "End") return 0; cout << win[s] << "\n"; } string s; cin >> s; if (s == "End") return 0; cout << lose[s] << "\n"; } }
7-7 阶乘的非零尾数 (20分)
#include <bits/stdc++.h> using ll = long long; using namespace std; const int mod = 1e9; const int N = 1e7 + 100; int a[N], five, zero; int main() { int n, k; cin >> n >> k; iota(a, a + n + 1, 0); for (int i = 1; i <= n; i++) { while (a[i] % 5 == 0) { a[i] /= 5; ++five; } } for (int i = 1; i <= n; i++) { while (five and a[i] % 2 == 0) { a[i] /= 2; --five; ++zero; } } ll fac = 1; for (int i = 1; i <= n; i++) { fac *= a[i]; fac %= mod; } string s = string(k, '0') + to_string(fac); cout << s.substr(s.size() - k, k) << ' ' << zero << "\n"; }
7-8 三足鼎立 (25分)
#include <bits/stdc++.h> using ll = long long; using namespace std; int main() { int n, p; cin >> n >> p; int a[n] = {}; for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a, a + n); ll ans = 0; for (int i = 0; i < n; i++) { int mi = abs(a[i] - p); int mx = a[i] + p; int l = upper_bound(a, a + n, mi) - a; int r = lower_bound(a, a + n, mx) - a; ans += r - l - (l <= i and i <= r); } cout << ans / 2 << "\n"; }

浙公网安备 33010602011771号