問題一覧 > 通常問題

No.2589 Prepare Integers

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 10
作問者 : KumaTachiRen / テスター : hirayuu_yc
1 ProblemId : 9390 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-01-01 00:13:56

問題文

クリスマスパーティーに向けて,あなたは整数を用意することになりました.

あなたははじめ,整数 0010100010^{1000} 個持っています. また 22 つの非負整数 X,YX,Y を投入すると,それらを消費して次で定まる非負整数 ZZ を生み出す機械も所有しています:

  • 任意の非負整数 ii に対し,X,YX,YKK 進表記したときの KiK^i の位の数字をそれぞれ x,yx,y とすると ZZKK 進表記したときの KiK^i の位の数字は (x+y)modK(x+y)\bmod K である(KK は入力で与えられる 22 以上の整数).
あなたが持っている整数に対して機械を好きな回数(00 回でもよい)使って作ることができるような整数を良い数と呼ぶこととします.

クエリが QQ 個与えられるので,与えられた順に処理してください. 各クエリでは整数 t,x (1t3)t,x\ (1\leq t\leq 3) が与えられます.

  • t=1t=1 のとき:あなたは新たに正整数 xx10100010^{1000} 個入手する.これはこれ以降のクエリにも影響し,特にこのクエリの前後で良い数の集合は変化し得る.
  • t=2t=2 のとき:良い数のうち,小さい方から xx 番目の値を出力する.ただし良い数が xx 種類未満の場合は-1を出力する.
  • t=3t=3 のとき:良い数のうち,xx 以下であるものの個数を出力する.

入力

K QK\ Q
t1 x1t_1\ x_1
\vdots
tQ xQt_Q\ x_Q

  • 2K1092\leq K\leq 10^9
  • 1Q1041\leq Q\leq 10^4
  • 1ti31\leq t_i\leq 3
  • ti=1t_i=1 ならば 1xi1091\leq x_i\leq 10^9
  • ti=2t_i=2 ならば 1xi10181\leq x_i\leq 10^{18}
  • ti=3t_i=3 ならば 0xi10180\leq x_i\leq 10^{18}
  • 入力は全て整数である

出力

QQ 個のクエリのうち tt2233 であるものの個数を MM として,MM 行出力してください.

j (1jM)j\ (1\leq j\leq M) 行目には,tt2233 であるクエリのうち jj 番目のものの指示に従って整数を出力してください.

MM 行目の出力の後にも改行してください.

サンプル

サンプル1
入力
2 8
1 13
1 5
1 9
2 5
3 5
1 11
2 5
3 5
出力
8
4
4
6

33 番目のクエリまで処理した時点での良い数は 0,1,4,5,8,9,12,130,1,4,5,8,9,12,13 です. また,66 番目のクエリまで処理した時点での良い数は 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,150,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 です.

サンプル2
入力
17 10
1 20
2 23
3 12
1 17
2 20
3 23
1 12
2 17
3 20
2 23
出力
-1
1
19
24
16
21
22

サンプル3
入力
30 10
1 68045
1 39072
1 14466
2 846282
3 472013
2 294767
1 37755
2 50526
3 710447
3 946027
出力
-1
7867
-1
505228
71046
81000

サンプル4
入力
100000000 10
1 280891310
1 866405535
2 507843655
3 7490561978746756
1 181882853
2 869882551
3 44425977686455401
1 843088846
2 395320008
3 5837034220072028
出力
5039218270
749056200000000
869882550
10000000000000000
395320007
5837034220072029

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。