結果
| 問題 |
No.1143 面積Nの三角形
|
| コンテスト | |
| ユーザー |
milanis48663220
|
| 提出日時 | 2020-08-10 12:01:39 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 167 ms / 800 ms |
| コード長 | 1,073 bytes |
| コンパイル時間 | 988 ms |
| コンパイル使用メモリ | 96,648 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-10-06 22:26:49 |
| 合計ジャッジ時間 | 2,733 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 18 |
ソースコード
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cmath>
using namespace std;
typedef long long ll;
ll N;
template <typename T>
vector<T> divs(T N) {
vector<T> ans;
for (ll i = 1; i * i <= N; i++) {
if (N % i == 0) {
ans.push_back(i);
if (i * i != N) ans.push_back(N / i);
}
}
return ans;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout << setprecision(10) << fixed;
cin >> N;
vector<ll> v = divs<ll>(N*N);
int ans = 0;
for(ll s : v){
for(ll sa : v){
if(N*N%(s*sa) != 0) continue;
if(s <= sa) continue;
ll sum = s-sa;
ll prod = N*N/(s*sa);
ll D = sum*sum-4*prod;
ll sq = (ll)(sqrt(D)+0.1);
if(sq*sq != D) continue;
if((sum+sq)%2 != 0) continue;
ll sb = (sum+sq)/2;
ll sc = (sum-sq)/2;
if(sa >= sb && sa >= sc) {
ans++;
}
}
}
cout << ans << endl;
}
milanis48663220