結果
問題 | No.1143 面積Nの三角形 |
ユーザー |
![]() |
提出日時 | 2020-07-31 21:59:11 |
言語 | C++17(clang) (17.0.6 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 553 ms / 800 ms |
コード長 | 1,965 bytes |
コンパイル時間 | 7,401 ms |
コンパイル使用メモリ | 164,316 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-06 18:00:37 |
合計ジャッジ時間 | 5,696 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
#include<bits/stdc++.h>using namespace std;#define int long long#define ii pair <int, int>#define app push_back#define all(a) a.begin(), a.end()#define bp __builtin_popcountll#define ll long long#define mp make_pair#define f first#define s second#define Time (double)clock()/CLOCKS_PER_SEC#define debug(x) std::cout << #x << ": " << x << '\n';const int INF = 2e18;int mul(int a, int b) {if (a == 0 || b == 0)return 0;if (INF / a < b)return INF;elsereturn a * b;}signed main() {#ifdef HOMEfreopen("input.txt", "r", stdin);#else#define endl '\n'ios_base::sync_with_stdio(0); cin.tie(0);#endifint n;cin >> n;int m = n * n;vector <int> d;for (int i = 1; i * i <= m; ++i) {if (m % i == 0) {d.app(i);if (i * i != m)d.app(m/i);}}sort(all(d));int ans = 0;for (int i = 0; mul(mul(d[i], d[i]), mul(d[i], d[i])) <= m; ++i) {for (int j = i; j < d.size() && mul(mul(d[i], d[j]), mul(d[j], d[j])) <= m; ++j) {for (int k = j; k < d.size() && mul(mul(d[i], d[j]), mul(d[k], d[k])) <= m; ++k) {int tot = mul(d[i], mul(d[j], d[k]));if (m % tot == 0) {int p = m / tot;if (d[k] < p) {int a = p - d[k];int b = p - d[j];int c = p - d[i];assert(a <= b);assert(b <= c);if (2 * p == a + b + c && a + b > c) {++ans;//cout << a << ' ' << b << ' ' << c << endl;}}}}}}cout << ans << endl;#ifdef HOMEcerr << Time << endl;#endif}