結果
| 問題 |
No.1498 Factorization from -1 to 1
|
| ユーザー |
t33f
|
| 提出日時 | 2021-05-08 14:46:16 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 265 ms / 3,000 ms |
| コード長 | 1,008 bytes |
| コンパイル時間 | 1,055 ms |
| コンパイル使用メモリ | 81,680 KB |
| 最終ジャッジ日時 | 2025-01-21 09:16:50 |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 6 |
| other | AC * 17 |
ソースコード
#include <algorithm>
#include <cassert>
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<vector<long long> > factors(100100);
vector<long long> rem(100100);
for (int i = 1; i < rem.size(); i++)
rem[i] = (long long)i * i + 1;
for (int i = 1; i < factors.size(); i++) {
long long p = rem[i];
if (p == 1) continue;
for (long long j = i; j < 100100; j += p)
while (rem[j] % p == 0) {
rem[j] /= p;
factors[j].push_back(p);
}
for (long long j = p - i; j < 100100; j += p)
while (rem[j] % p == 0) {
rem[j] /= p;
factors[j].push_back(p);
}
}
for (auto& v : factors) sort(v.begin(), v.end());
int q; cin >> q;
while (q--) {
int k; cin >> k;
for (int i = 0; i < factors[k].size(); i++) {
cout << factors[k][i] << (i == factors[k].size() - 1 ? '\n' : ' ');
}
}
}
t33f