#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
ll mul(ll a, ll b, ll mod) {
ll ans = 0;
while (b) {
if (b & 1) { // 若当前位为1
b--;
ans = (ans + a) % mod; // ans += a
}
b /= 2; // b 向前移位
a = (a + a) % mod; // 更新a
}
return ans;
}
int main() {
ll p, q;
int t;
scanf("%d", &t);
while (t--) {
scanf("%I64d%I64d", &q, &p);
ll ans;
ll a = q - 1; // (q-1)* (q-2) 是 个数
ll b = q - 2;
ans = mul(a/2, b , p);
printf("%I64d\n", ans);
}
return 0;
}
bc #80 1002 (快速乘法取模)
最新推荐文章于 2021-02-25 18:28:53 发布