#P15797. [2026作业]巨型前缀串

    ID: 15008 传统题 1000ms 512MiB 尝试: 5 已通过: 1 难度: 9 上传者: 标签>数学组合数学算法基础前缀和CF2600

[2026作业]巨型前缀串

题目描述

语言学家 Arin 正在研究一个无限长的字符串。给定一个大小为 kk 的字母表

Σ={s0,s1,,sk1}.\Sigma=\{s_0,s_1,\ldots,s_{k-1}\}.

定义一列字符串 TiT_i

  • T0=s0T_0=s_0
  • 对所有 i1i\ge 1
Ti=Ti1simodk.T_i=T_{i-1}s_{i\bmod k}.

也就是说,每一步都在前一个字符串后面追加一个按下标循环出现的字符。

再定义无限字符串

S=T0T1T2,S=T_0T_1T_2\cdots,

即把所有 TiT_i 按下标从小到大依次拼接起来。

例如,当 k=3k=3,且 s0=a,s1=b,s2=cs_0=\texttt{a},s_1=\texttt{b},s_2=\texttt{c} 时:

$$T_0=\texttt{a},\quad T_1=\texttt{ab},\quad T_2=\texttt{abc},\quad T_3=\texttt{abca},$$T7=abcabcab,T_7=\texttt{abcabcab},

并且

S = aababcabcaabcab...

SnS_nSS 的长度为 nn 的前缀。

给定 n,kn,k,请计算在字母表大小为 kk 时,字符串 SnS_n 中不同的非空子串数量。

输入格式

第一行包含一个整数 TT,表示测试数据组数。

接下来 TT 行,每行包含两个整数 ni,kin_i,k_i,表示一组询问中的前缀长度和字母表大小。

输出格式

输出 TT 行,第 ii 行输出第 ii 组询问的答案。

数据范围

  • 1T1051\le T\le 10^5
  • 1ni1091\le n_i\le 10^9
  • 1ki1091\le k_i\le 10^9

样例

输入

7
1 3
2 3
3 3
4 3
5 3
6 3
7 3

输出

1
2
5
8
11
17
23