結果
問題 |
No.889 素数!
|
ユーザー |
|
提出日時 | 2024-03-27 21:47:57 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,036 bytes |
コンパイル時間 | 4,391 ms |
コンパイル使用メモリ | 254,752 KB |
最終ジャッジ日時 | 2025-02-20 14:07:08 |
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 61 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> using namespace std; using namespace atcoder; using ll = long long; using ld = long double; int main() { int N; cin >> N; vector<string> ans(64, ""); vector<bool> isprime(64, true); isprime[0] = false; isprime[1] = false; for (int i = 2; i < 64; i++) { if (isprime[i]) { ans[i] = "Sosu!"; for (int j = i + i; j < 64; j += i) isprime[j] = false; } } for (int i = 2; i * i < 64; i++) { ans[i * i] = "Heihosu!"; } for (int i = 2; i * i * i < 64; i++) { ans[i * i * i] = "Ripposu!"; } vector<int> div; for (int i = 1; i < 64; i++) { div.clear(); for (int j = 1; j * j <= i; j++) { if (i % j == 0) { div.push_back(j); if (j * j != i) div.push_back(i / j); } } sort(div.begin(), div.end()); int sum = 0; for (int j = 0; j < div.size() - 1; j++) sum += div[j]; if (i == sum) ans[i] = "Kanzensu!"; } if (ans[N] == "") cout << N << endl; else cout << ans[N] << endl; return 0; }