Wannafly 22A

时间:2023-03-09 22:42:35
Wannafly 22A

题解

另g = gcd(a1,a2,a3....)

那么k * g % m的方案书就是答案

这个式子子显然是有循环节的

x * g = 0 mod m ,x * g + y * m = 0

exgcd 后 x = x0 + k * (m/gcd(g,m)) 也是就m/gcd(g,m)

代码

#include<map>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m;
int a[1007];
int gcd(int x,int y) {
if(!y) return x;
else return gcd(y,x % y);
}
int main() {
int n ,m;
scanf("%d%d",&n,&m); int cnt = 0;
for(int i = 1;i <= n;++ i) {scanf("%d",a + i);if(a[i] > m)cnt ++; }
int num = m;
for(int i = 1;i <= n;++ i) num = gcd(a[i],num);
int ans = 0;
if(m % num) ans = (m / num) ;
else ans = m / num;
printf("%d\n",ans);
return 0;
}