結果

問題 No.2452 Incline
ユーザー kotatsugamekotatsugame
提出日時 2023-09-01 21:33:19
言語 Ruby
(3.4.1)
結果
AC  
実行時間 1,988 ms / 2,000 ms
コード長 506 bytes
コンパイル時間 237 ms
コンパイル使用メモリ 8,064 KB
実行使用メモリ 12,928 KB
最終ジャッジ日時 2025-01-03 07:32:01
合計ジャッジ時間 11,201 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 8
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.rb:3: warning: literal in condition
Syntax OK

ソースコード

diff #

def g(n,m,a,b)
  ans=0
  while 1
    if a>=m
      ans+=n*(n-1)/2*(a/m)
      a%=m
    end
    if b>=m
      ans+=n*(b/m)
      b%=m
    end
    ym=a*n+b
    break if ym<m
    n=ym/m
    b=ym%m
    m,a=a,m
  end
  return ans
end
def f(n,m,a,b)
  ans=0
  if a<0
    a2=a%m
    ans-=n*(n-1)/2*((a2-a)/m)
    a=a2
  end
  if b<0
    b2=b%m
    ans-=n*((b2-b)/m)
    b=b2
  end
  return ans+g(n,m,a,b)
end
gets.to_i.times{
  n,m,l,r=gets.split.map &:to_i
  puts (f(m+1,n-1,-1,r)-f(m+1,n-1,-1,l-1))%998244353
}
0