結果

問題 No.1252 数字根D
ユーザー persimmon-persimmon
提出日時 2021-02-23 12:55:40
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 96 ms / 2,000 ms
コード長 697 bytes
コンパイル時間 164 ms
コンパイル使用メモリ 82,380 KB
実行使用メモリ 77,484 KB
最終ジャッジ日時 2024-09-22 08:28:01
合計ジャッジ時間 2,175 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 14
権限があれば一括ダウンロードができます

ソースコード

diff #

t=int(input())
dab=[list(map(int,input().split())) for _ in range(t)]
for d,a,b in dab:
  if a==0:
    if b==0:
      print(0)
      continue
    a+=1  

  # 1からbまで
  num_b=b
  while num_b>=d:
    bb=num_b
    num_b=0
    while bb:
      num_b+=bb%d
      bb//=d
  # 1~d-1の和を項数//(d-1)個分
  ans1=(b//(d-1))*((d-1)*d//2)
  # 1~num_bまでの和
  if num_b!=d-1:
    ans1+=(num_b+1)*num_b//2

  # 1からa-1まで
  a-=1

  num_a=a
  while num_a>=d:
    aa=num_a
    num_a=0
    while aa:
      num_a+=aa%d
      aa//=d

  # 1~d-1の和を項数//(d-1)個分
  ans0=(a//(d-1))*((d-1)*d//2)
  # 1~num_bまでの和
  if num_a!=d-1:
    ans0+=(num_a+1)*num_a//2
  print(ans1-ans0)
0