結果
| 問題 |
No.1358 [Zelkova 2nd Tune *] 語るなら枚数を...
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-02-13 20:21:55 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 994 bytes |
| コンパイル時間 | 260 ms |
| コンパイル使用メモリ | 82,564 KB |
| 実行使用メモリ | 67,904 KB |
| 最終ジャッジ日時 | 2024-07-21 00:11:00 |
| 合計ジャッジ時間 | 2,274 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | RE * 17 |
ソースコード
def main1(n,k,h,y):
ary=[n,k,h]
ary.sort()
a,b,c=ary
g=gcd(a,b)
na,nb=a//g,b//g
now=0
ans=0
while now<=y:
yy=y-now
now+=c
if yy%g!=0:continue
yy=yy//g
if yy==0:
ans+=1
continue
if yy<na:continue
if yy<nb:
if yy%na==0:
ans+=1
continue
# yy-nb*iがmod naで0になるiの個数
# yy%na=nb*i%na となるiの個数
# 0<=i<=yy//nb
# yy%na=nb*i%na となる最小のiを求める。あとは周期naで循環する。
u=yy%na
v=nb%na
# u=v*i
# u*v^(-1)=i
if u==0:
i=0
elif u==v:
i=1
else:
i=u*pow(v,-1,na)
i%=na
#print((na,nb),yy,i)
if yy-nb*i<0:continue
w=yy//nb
if i<=w:
ans+=(w-i)//na+1
ans%=mod
#print((u,v,w))
#print((na,nb,yy),i,w,(w-i)//na+1)
return ans
if __name__=='__main__':
t=int(input())
cases=[list(map(int,input().split())) for _ in range(t)]
for n,k,h,y in cases:
print(main1(n,k,h,y))