結果
| 問題 |
No.889 素数!
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-09-16 16:07:50 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 772 bytes |
| コンパイル時間 | 583 ms |
| コンパイル使用メモリ | 65,888 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-07 02:24:50 |
| 合計ジャッジ時間 | 2,102 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 61 |
ソースコード
#include<iostream>
#include<cassert>
using namespace std;
int main(){
bool np[64] = {};
np[0] = np[1] = true;
for(int i = 2; i < 64; i++){
if(np[i]) continue;
for(int j = i+i; j < 64; j+=i) np[j] = true;
}
auto f = [=](int x)->string{
if(x < 2) return to_string(x);
if(!np[x]) return "Sosu!";
int sum = -x;
for(int i = 1; i*i <= x; i++){
if(i*i == x) return "Heihosu!";
if(i*i*i == x) return "Ripposu!";
if(x%i) continue;
sum += i + x/i; // absolutely i and x/i are different
}
return sum == x ? "Kanzensu!" : to_string(x);
};
int n;
cin >> n;
assert(0 <= n && n < 64);
cout << f(n) << endl;
return 0;
}