結果
問題 | No.356 円周上を回る3つの動点の一致 |
ユーザー |
![]() |
提出日時 | 2017-01-16 22:12:20 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,092 bytes |
コンパイル時間 | 825 ms |
コンパイル使用メモリ | 97,004 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-13 21:11:21 |
合計ジャッジ時間 | 2,100 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 48 |
ソースコード
#include "math.h" #include <algorithm> #include <complex> #include <cstdio> #include <iomanip> #include <iostream> #include <map> #include <queue> #include <string> #include <vector> #define ifor(i, a, b) for (int i = (a); i < (b); i++) #define rfor(i, a, b) for (int i = (b)-1; i >= (a); i--) #define rep(i, n) for (int i = 0; i < (n); i++) #define rrep(i, n) for (int i = (n)-1; i >= 0; i--) using namespace std; using lli = long long int; struct frac { lli up, down; frac(lli a, lli b) { up = a / __gcd(a, b); down = b / __gcd(a, b); } frac minus(frac l, frac r) { return frac(abs(l.up * r.down - r.up * l.down), l.down * r.down); } }; int main() { lli t[3]; cin >> t[0] >> t[1] >> t[2]; sort(t, t + 3); frac a(1, t[0]); frac b(1, t[1]); frac c(1, t[2]); frac d = a.minus(a, b); frac e = a.minus(a, c); lli f = d.down / __gcd(d.down, e.down) * e.down; lli g = e.up * d.down / __gcd(d.down, e.down); lli h = d.up * e.down / __gcd(d.down, e.down); cout << f << "/" << __gcd(g, h) << endl; }