結果
問題 |
No.2953 Maximum Right Triangle
|
ユーザー |
![]() |
提出日時 | 2025-03-18 03:17:43 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 5 ms / 2,000 ms |
コード長 | 1,065 bytes |
コンパイル時間 | 13,735 ms |
コンパイル使用メモリ | 230,784 KB |
実行使用メモリ | 7,324 KB |
最終ジャッジ日時 | 2025-03-18 03:17:58 |
合計ジャッジ時間 | 14,369 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 6 |
ソースコード
package main import . "fmt" import . "math/big" func main() { var t int Scan(&t) for ;t>0;t-- { var d,ax,ay int64 Scan(&d, &ax, &ay) switch { case ax == 0: Println(d*ay) case ay == 0: Println(d*ax) default: m := new(Int).GCD(nil, nil, NewInt(ax), NewInt(ay)).Int64() dx,dy := ay/m, ax/m var s int64 if bx,by := ax-(ax/dx)*dx,ay+(ax/dx)*dy; (0<=bx&&bx<ax)&&(ay<by&&by<=d) { tmp := by*(ax*2-bx)-ax*ay-(ax-bx)*(by-ay) s = max(s, tmp) } if bx,by := ax-((d-ay)/dy)*dx,ay+((d-ay)/dy)*dy; (0<=bx&&bx<ax)&&(ay<by&&by<=d) { tmp := by*(ax*2-bx)-ax*ay-(ax-bx)*(by-ay) s = max(s, tmp) } if bx,by := ax+(ay/dy)*dx,ay-(ay/dy)*dy; (ax<bx&&bx<=d)&&(0<=by&&by<ay) { tmp := bx*(ay*2-by)-ax*ay-(bx-ax)*(ay-by) s = max(s, tmp) } if bx,by := ax+((d-ax)/dx)*dx,ay-((d-ax)/dx)*dy; (ax<bx&&bx<=d)&&(0<=by&&by<ay) { tmp := bx*(ay*2-by)-ax*ay-(bx-ax)*(ay-by) s = max(s, tmp) } Println(s) } } } func max(a, b int64) int64 { if a > b { return a } else { return b } }