一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K。例如,K % 2 = 1, K % 3 = 2, K % 5 = 3。符合条件的最小的K = 23。Input第1行:1个数N表示后面输入的质数及模的数量。(2 <= N <= 10)
第2 - N + 1行,每行2个数P和M,中间用空格分隔,P是质数,M是K % P的结果。(2 <= P <= 100, 0 <= K < P)Output输出符合条件的最小的K。数据中所有K均小于10^9。Sample Input
第2 - N + 1行,每行2个数P和M,中间用空格分隔,P是质数,M是K % P的结果。(2 <= P <= 100, 0 <= K < P)Output输出符合条件的最小的K。数据中所有K均小于10^9。Sample Input
3 2 1 3 2 5 3Sample Output
23
这个定理好像小学就见过...只不过用数学解就是解方程组,计算机的话就要另说了。
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int p[n],m[n];
for(int i=0; i<n; i++)
{
scanf("%d%d",&p[i],&m[i]);
}
int k=1,l=m[0];
for(int i=0; i<n-1; i++)
{
k*=p[i];
while(l%p[i+1]!=m[i+1]) //当这个余数不满足第二组数据时就要一直加第一组除数
{ //之后再不满足下一组数据时就要加上之前所有除数的乘积
l+=k;
}
}
printf("%d\n",l);
return 0;
}