結果
問題 | No.864 四方演算 |
ユーザー |
|
提出日時 | 2019-08-23 23:00:02 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 14 ms / 1,000 ms |
コード長 | 1,141 bytes |
コンパイル時間 | 2,183 ms |
コンパイル使用メモリ | 200,724 KB |
最終ジャッジ日時 | 2025-01-07 14:46:13 |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
/**@file main.cpp@title No.864 四方演算@url https://yukicoder.me/problems/no/864**/#include <bits/stdc++.h>using namespace std;typedef long long LL;#define ALL(obj) (obj).begin(), (obj).end()#define REP(i, N) for (int i = 0; i < (N); ++i)vector<LL> make_divisors(LL n) {vector<LL> divisors;for (LL i = 1; i <= sqrt(n) + 1; i++) {if (n % i == 0) {divisors.push_back(i);divisors.push_back(n / i);}}sort(ALL(divisors));divisors.erase(unique(divisors.begin(), divisors.end()), divisors.end());return divisors;}LL seps(LL q, LL N) {if (q <= 1 || q > 2 * N) return 0;return N - abs(N + 1LL - q);}template <class T>void show(vector<T>& v) {for (LL i = 0; i < v.size(); i++) {cout << v[i] << " ";}cout << "\n";}int main() {LL N, K;cin >> N >> K;vector<LL> divs = make_divisors(K);// show(divs);LL ans = 0;for (auto i : divs) {if (i == 1 || i == K) {continue;}LL j = K / i;// cout << seps(i, N) << " , " << seps(j, N) << "\n";ans += seps(i, N) * seps(j, N);}cout << ans << endl;return 0;}