#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int N;
long long M[10], R[10];
long long M_multi;
void init()
{
for (int i = 0; i < 10; i++)
{
M[i] = R[i] = 0;
}
N = 0;
M_multi = 1;
}
void input()
{
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d %d", R + i, M + i);
M_multi *= M[i];
}
}
long long getY(long long M, long long m)
{
int a = M % m;
long long i = 1;
while ((i*a) % m != 1)
{
i++;
}
return i;
}
void solve()
{
long long sum = 0;
for (int i = 0; i < N; i++)
{
long long Mi = M_multi / M[i];
sum += R[i] * Mi * getY(Mi, M[i]);
// printf("Ri : %d\nMi : %d\ngetY : %d\n", R[i], Mi, getY(Mi, M[i]));
}
long long answer = sum % M_multi;
printf(" %lld", answer);
}
int main(void)
{
freopen("input.txt", "r", stdin);
int test_case;
int T;
setbuf(stdout, NULL);
scanf("%d", &T);
for (test_case = 1; test_case <= T; ++test_case)
{
printf("#%d", test_case);
init();
input();
solve();
printf("\n");
}
return 0;
}
댓글