1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#include <cstdio>
long long qmul(long long a, long long b, long long mod) { long long ans = 0; while(b){ if(b & 1) ans = (ans + a) % mod; a = (a << 1) % mod; b >>= 1; } return ans; }
int main(int argc, char* argv[]) { int T; long long q, p, a, b; scanf("%d", &T); while(T--){ scanf("%I64d%I64d", &q, &p); a = q - 1; b = q - 2; a >>= 1; printf("%I64d\n", qmul(a, b, p)); } return 0; }
|