HDU 1788 同余的应用

/*

N % M = M - a
N % M + a = M
N + a ≡ 0( mod M )

所以求M的最小公倍数

*/
#include<iostream>
#include<cstdio>

using namespace std;

typedef long long ll;

ll gcd(ll a,ll b)
{
    return b==0?a:gcd(b,a%b);
}

int main()
{
    ll k,a,n;
    ll ans;
    while(cin>>k>>a,k+a){
        ans=1;
        for(ll i=0;i<k;i++){
            cin>>n;
            ans=(ans*n)/gcd(ans,n);
        }
        cout<<ans-a<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40679299/article/details/80317054