結果
| 問題 | 
                            No.889 素数!
                             | 
                    
| コンテスト | |
| ユーザー | 
                             oevl
                         | 
                    
| 提出日時 | 2019-09-21 01:50:20 | 
| 言語 | C++14  (gcc 13.3.0 + boost 1.87.0)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 2 ms / 2,000 ms | 
| コード長 | 1,073 bytes | 
| コンパイル時間 | 1,787 ms | 
| コンパイル使用メモリ | 172,800 KB | 
| 実行使用メモリ | 6,948 KB | 
| 最終ジャッジ日時 | 2024-09-15 07:30:20 | 
| 合計ジャッジ時間 | 3,539 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 61 | 
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define rep(i, m, n) for (int i = m; i < n; ++i)
bool isPrime(int n) {
    rep(i, 2, n) if(n % i == 0) return false;
    return true;
}
bool isHe(int n) {
    rep(i, 1, n + 1) if(i * i == n) return true;
    return false;
}
bool isRi(int n) {
    rep(i, 1, n + 1) if(i * i * i == n) return true;
    return false;
}
template<class T>
vector<T> divList(T n) {
    vector<T> res;
    for(T i = 1; i * i <= n; ++i) {
        if(n % i == 0) {
            res.push_back(i);
            if(i * i != n) res.push_back(n / i);
        }
    }
    sort(res.begin(), res.end());
    return res;
}
bool isKan(int n) {
    vector<int> D = divList(n);
    int sum = 0;
    for(auto d : D) sum += d;
    return sum - n == n;
}
int main() {
    int N; cin >> N;
    if(N < 2) cout << N << '\n';
    else if(isPrime(N)) cout << "Sosu!" << '\n';
    else if(isHe(N)) cout << "Heihosu!" << '\n';
    else if(isRi(N)) cout << "Ripposu!" << '\n';
    else if(isKan(N)) cout << "Kanzensu!" << '\n';
    else cout << N << '\n';
    return 0;
}
            
            
            
        
            
oevl