結果
| 問題 |
No.1737 One to N
|
| コンテスト | |
| ユーザー |
れいん
|
| 提出日時 | 2025-05-08 19:18:52 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,048 bytes |
| コンパイル時間 | 3,460 ms |
| コンパイル使用メモリ | 277,132 KB |
| 実行使用メモリ | 7,844 KB |
| 最終ジャッジ日時 | 2025-05-08 19:18:57 |
| 合計ジャッジ時間 | 4,681 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
vector<pair<long long, long long>> prime_factorize(long long N)
{
// 答えを表す可変長配列
vector<pair<long long, long long>> res;
// √N まで試し割っていく
for (long long p = 2; p * p <= N; ++p)
{
// N が p で割り切れないならばスキップ
if (N % p != 0)
{
continue;
}
// N の素因数 p に対する指数を求める
int e = 0;
while (N % p == 0)
{
// 指数を 1 増やす
++e;
// N を p で割る
N /= p;
}
// 答えに追加
res.emplace_back(p, e);
}
// 素数が最後に残ることがありうる
if (N != 1)
{
res.emplace_back(N, 1);
}
return res;
}
int main()
{
int N;
cin >> N;
vector<pair<long long, long long>> pf = prime_factorize(N);
long long ans = 0;
for (auto [p, e] : pf)
{
ans += p * e;
}
cout << ans;
}
れいん