AtCoder 300点の問題を解き直す その3
今までは Ruby で解いていましたが、C++に変更しました。
ABC 064 C - Colorful Leaderboard
数学パズルっぽい問題です。
コード
#include <bits/stdc++.h> using namespace std; int main(){ cin.tie(0); ios::sync_with_stdio(false); int N; cin >> N; int a[N]; for(int i = 0; i < N; i++){ cin >> a[i]; } int b[9]{}; for(int i : a){ int idx = i / 400; if(idx >= 8){ idx = 8; b[idx]++; }else{ b[idx] = 1; } } int Min = 0; for(int i = 0; i < 8; i++){ Min += b[i]; } int Max; if(Min == 0){ Min = 1; b[8]--; } Max = Min + b[8]; cout << Min << " " << Max << "\n"; return 0; }
ABC 070 C - Multiple Clocks
最小公倍数の問題です。オーバーフローに注意します。
コード
#include <bits/stdc++.h> using namespace std; long gcd(long a, long b){ if(a > b) return gcd(b, a); long k = b % a; if(k == 0) return a; return gcd(a, k); } long lcm(long a, long b){ return a / gcd(a, b) * b; } int main(){ cin.tie(0); ios::sync_with_stdio(false); int N; cin >> N; long T[N]; for(int i = 0; i < N; i++){ cin >> T[i]; } long l = T[0]; for(int i = 1; i < N; i++){ l = lcm(l, T[i]); } cout << l <<"\n"; return 0; }
ABC 073 C - Write and Erase
ハッシュに関する問題です。
コード
#include <bits/stdc++.h> using namespace std; int main(){ cin.tie(0); ios::sync_with_stdio(false); int N, A; cin >> N; set<int> s; while(N--){ cin >> A; if(s.count(A)){ s.erase(A); }else{ s.insert(A); } } cout << s.size() << "\n"; return 0; }