#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
ll a[25000001],cnt;//数组开大点
bool check(ll x)
{
ll i;
//不知道为啥洛谷的测试点从1开始判断会超时4个测试点
for(i=cnt-1; i>=1; i--) if(a[i]%x==0)return false;
return true;
}
ll gcd(ll a,ll b){//最大公约数
if(a==0) return b;
return gcd(b%a,a);
}
int main()
{
ll n,k;scanf("%lld %lld",&n,&k);
ll res=n;
for( int i=1;i<=k;i++) scanf("%lld",&a[i]);
for( int i=1;i<=k;i++) a[i]=gcd(a[i],n);//晒出不是密码的因子
sort(a+1,a+k);//排序与unique去重配合
cnt=unique(a+1,a+k)-a;//去重求出个数
for(ll i=1;i*i<=a[k];i++)
if(a[k]%i==0) {
if(check(i))
{
res=n/i;
break;
}
else if(check(a[k]/i)) res=n/a[k]*i;
}
printf("%lld",res);
return 0;
}
P3518 [POI2011]SEJ-Strongbox
最新推荐文章于 2024-08-09 20:36:57 发布