UOJ Logo Universal Online Judge

UOJ

#578. 【ULR #1】校验码

附件下载 统计

“跳找”搜索引擎的开发过程涉及到大量数据包的传输,为了保证传输过程稳定,你选择了用下面的方式算出一个校验码:

定义函数 q(n,c) ,满足下列性质:

  • 对所有质数 p 和非负整数 k,有 q(pk,c)=pck/2

  • 对所有互质的正整数 n,mq(nm,c)=q(n,c)q(m,c)。(即在第一维上满足积性)

不难发现,当 c 确定后,可以根据上述性质唯一确定每个 q(n,c) 的值。

我们可以把数据包认为是由若干个非负整数对 (ui,vi) 组成的序列。这样我们先通过上面的算法计算出 q(uivi,c) 作为该整数对的校验码,然后将所有整数对的校验码求和再对 232 取余后,就可以得到数据包的校验和。

现在你有一个非常大的数据包,其大小为 n×m,且对于所有满足 1in,1jm(i,j),数据包中包含恰好一个整数对 (i,j)。请你计算出该数据包的校验和。

也就是说,对于给定的正整数 n,m,c,你需要求出下列式子对 232 取模的值:

i=1nj=1mq(ij,c).

输入格式

本题有多组测试数据。

第一行一个正整数 T,表示数据组数。

下面 T 行,每行三个整数 : n,m,c,意义如题目所述。

输出格式

对于每组测试数据,输出一行一个整数,表示答案对 232 取模的结果。

样例一

input

3
10 100 1
998 244 353
1911 1949 1978

output

3733
3704996707
981669122

样例二

input

3
1 9078917 1
1 99989717 22
92734 3529465017 68715

output

49378630
1117102208
1722526387

限制与约定

对于所有数据, 1n5×105, 1m1.2×1011 ,1c105,1T3

子任务编号 n m 分值
1 2000 2000 10
2 5×105 5×105 15
3 1 5×109 15
4 1.2×1011 10
5 104 109 15
6 105 1010 15
7 5×105 1.2×1011 20

时间限制5s

空间限制512MB

下载

样例数据下载