I-迷途的怪物
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

圣杯能召唤过去,现在甚至未来的各种英灵。想必也有不同世界的英灵会被召唤,所以才会有对圣杯的不断响应吧。为了修复过去的错误。为了重新选择。 
「吾名奥德修斯,为七骑之中的狂战士(berserker)」面前的怪物开口了,虽然具有人形,但却没有一点人的感觉。更像是失控的野兽。 
「还保有理智吗」 
「是的」怪物没有过多的行动「开门见山吧,吾辈是没有战胜魔女喀耳刻的奥德修斯。我不曾再见过我的妻儿,被魔女任意改造成可怕的怪物。因为同为奥德修斯而被记录在英灵座上的怪物罢了。我不打算和你们动手,但你们必须回答我的问题,才能离开。无法得到答案,连我也无法离开这个迷宫」 
「请说」 
「迷宫的一个岔口对应一个谜题,而这些谜题的答案都是由一个公式计算得到的,这个公式就是(p-1)n % p。每个岔口都有对应的p和n,而且p必定为一个素数。带着我,只要你计算出正确答案,我就能告诉你正确的前进方向」它起身了 
「我明白了」虽然它给我感觉是失控的野兽,但却毫无危险的感觉 

输入描述:

第一行输入一个整数T (1<=T<=5),代表有T个样例,
对于每组样例,输入一行,每行输入一个质数p (2<=p<=109)和一个整数n (0<=n<101000001 )。

输出描述:

对于每一组样例,输出(p-1)n % p
(注:'%'是取模运算符,也叫取余运算符,比如:8 % 3 = 2,因为8除于3的余数是2。更详细的说:因为8 = 2*3 + 2,前一部分 "2*3" 是3的倍数,后一部分 "2" 是小于3的数,后一部分就是8 % 3的结果)
示例1

输入

复制
2
2 1
2 2

输出

复制
1
1

说明

提示:n会很大,请不要试图使用int和long long存,要用char数组存。另外,请不要执行1e7次及以上的取模运算,否则超时。

输入输出代码(参考):

#include <stdio.h>

char n[1000005];

int main()
{
int T;
scanf("%d", &T);
for(int t = 1; t <= T; t++)
{
int p;
scanf("%d %s", &p, n);

//...;

//printf...;

}

return 0;
}