結果
| 問題 |
No.2953 Maximum Right Triangle
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2024-11-08 23:22:18 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 32 ms / 2,000 ms |
| コード長 | 626 bytes |
| コンパイル時間 | 346 ms |
| コンパイル使用メモリ | 12,416 KB |
| 実行使用メモリ | 10,624 KB |
| 最終ジャッジ日時 | 2024-11-08 23:22:32 |
| 合計ジャッジ時間 | 1,115 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 6 |
ソースコード
import sys
input = sys.stdin.readline
from math import gcd
T=int(input())
for tests in range(T):
D,x,y=map(int,input().split())
GCD=gcd(x,y)
if x==0:
print(y*D)
continue
if y==0:
print(x*D)
continue
x2=x//GCD
y2=y//GCD
# (z,w) = (x,y) + k(-y2,x2)
# 0<=x-ky2<=D
# 0<=y+kx2<=D
# k<=x/y2,k<=(D-y)/x2,k>=(x-D)/y2,k>=-y/x2
MAX=min(x//y2,(D-y)//x2)
MIN=max((x-D+y2-1)//y2,(-y+x2-1)//x2)
if MIN<=MAX:
A1=abs(x*(y+MIN*x2)-y*(x-MIN*y2))
A2=abs(x*(y+MAX*x2)-y*(x-MAX*y2))
print(max(A1,A2))
else:
print(0)
titia