应该是关于输出“0”的特判萎了,有没有大佬帮忙看看啊qaq
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n, m;
int a[1000010];
int gcd(int x, int y)
{
if (x < y) swap(x, y);
int a = x % y;
if (a == 0) return x;
return gcd(y, a);
}
inline int read()
{
int x = 0, f = 1;
char c = getchar();
while (c < '0' || c>'9')
{
if (c == '-') f = -1;
c = getchar();
}
while (c >= '0' && c <= '9')
{
x = (x << 3) + (x << 1) + (c ^ '0');
c = getchar();
}
return x * f;
}
signed main()
{
n = read();
m = read();
int g = 1, qaq = 1, gg = 1;
int nw, pa;
for (int i = 1;i <= n;i++)
{
a[i] = read();
gg = __gcd(g, a[i]);
g = g * a[i] / gg;
}
pa = (a[1] / 2) % 2;
for (int i = 2;i <= n;i++)
{
nw = (a[i] / 2) % 2;
if (nw != pa)
{
printf("0");
return 0;
}
}
qaq = g / 2;
printf("%lld", (m - qaq) / g + 1);
return 0;
}