結果

問題 No.1252 数字根D
ユーザー persimmon-persimmonpersimmon-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
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 37 ms
52,988 KB
testcase_01 AC 41 ms
52,528 KB
testcase_02 AC 40 ms
54,684 KB
testcase_03 AC 75 ms
72,624 KB
testcase_04 AC 92 ms
77,372 KB
testcase_05 AC 89 ms
76,912 KB
testcase_06 AC 94 ms
77,192 KB
testcase_07 AC 93 ms
77,484 KB
testcase_08 AC 94 ms
76,996 KB
testcase_09 AC 86 ms
77,076 KB
testcase_10 AC 91 ms
77,160 KB
testcase_11 AC 94 ms
76,944 KB
testcase_12 AC 91 ms
77,396 KB
testcase_13 AC 96 ms
77,124 KB
testcase_14 AC 37 ms
52,640 KB
権限があれば一括ダウンロードができます

ソースコード

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