結果
| 問題 | No.229 線分上を往復する3つの動点の一致 |
| コンテスト | |
| ユーザー |
37zigen
|
| 提出日時 | 2018-04-03 22:41:09 |
| 言語 | Fortran (gFortran 14.2.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 1,029 bytes |
| コンパイル時間 | 230 ms |
| コンパイル使用メモリ | 33,180 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-06-26 08:35:32 |
| 合計ジャッジ時間 | 1,725 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 43 |
ソースコード
module m
contains
recursive integer(kind=8) function gcd(a,b)result(res)
integer(kind=8)::a,b
if(a<b)then
res=gcd(b,a)
return
end if
if(b==0)then
res=a
else
res=gcd(mod(a,b),b)
end if
end function
end module
program main
use m
implicit none
integer(kind=8)::i,j,k,x,y,z,w,r,a,b,c,tmp
integer(kind=8)::t1,t2,t3,den,num
num=1000000000000_8
den=1
read*,t1,t2,t3!t1<t2<t3
do i=-1,1,2
do j=-1,1,2
x=t3+i*t1
y=t3*t1
z=t3+j*t2
w=t3*t2
tmp=gcd(x,y)
x=x/tmp
y=y/tmp
tmp=gcd(z,w)
z=z/tmp
w=w/tmp
a=y*w
b=gcd(y*z,x*w)
tmp=gcd(a,b)
a=a/tmp
b=b/tmp
if(a*den<num*b)then
num=a
den=b
end if
end do
end do
print "(i0,'/',i0)",num,den
end program
37zigen