我发现这种数论题做的人数远不如数据结构,模拟等题做的人数多。
这道题开始讲的是中国剩余定理,但是最终解题和中国剩余定理没有太大的关系。
题意:一个正整数 n 除以 Mi 余 Mi + a.求最小的数。
那么 也就是说 : n%Mi=Mi-a;
====>>> n%Mi+a=Mi
所以(n +a )mod Mi 就等于0
那么就是要求最小公倍数~~;
附上代码: //要AC 得把int 换成 long long
#include <iostream>
using namespace std;
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
int n,a;
while(cin>>n>>a)
{
if(n==0&&a==0)break;
int temp,ans=1;
for(int i=0;i<n;i++)
{
cin>>temp;
ans=ans*temp/gcd(ans,temp);
}
cout<<ans-a<<endl;
}
return 0;
}