結果
問題 | 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 mainimport . "fmt"import . "math/big"func main() {var t intScan(&t)for ;t>0;t-- {var d,ax,ay int64Scan(&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/mvar s int64if 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}}