因为q是素数,所以算1+2+.....+q-2+q-1即可
也就是算(q-1)*q/2%p的值
不过中间会爆long long,所以要用大数类,当然快速乘法也可以过
直接上Java
import java.util.Scanner;
import java.math.*;
public class Main{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int t = in.nextInt();
String s1, s2;
while(true)
{
if(t == 0)
break;
s1 = in.next();
s2 = in.next();
BigInteger q = new BigInteger(s1);
BigInteger P = new BigInteger(s2);
BigInteger t1 = q.subtract(new BigInteger("2"));
BigInteger t2 = q.subtract(new BigInteger("1"));
System.out.println(t1.multiply(t2).divide(new BigInteger("2")).mod(P));
t--;
}
}
}
import java.math.*;
public class Main{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int t = in.nextInt();
String s1, s2;
while(true)
{
if(t == 0)
break;
s1 = in.next();
s2 = in.next();
BigInteger q = new BigInteger(s1);
BigInteger P = new BigInteger(s2);
BigInteger t1 = q.subtract(new BigInteger("2"));
BigInteger t2 = q.subtract(new BigInteger("1"));
System.out.println(t1.multiply(t2).divide(new BigInteger("2")).mod(P));
t--;
}
}
}