题目自己看,题意很简单。
今天写这个题目的时候,脑子抽了,说实话很简单的题目写了很久,对自己很失望,所以还是得继续加油。
1:我们发现表达式除了第一个之外,其他的数都是分母,然后我们在可以改变运算顺序的地方随便加上一个括号(就是在第一个数之后加括号),我们发现加了括号之后除了第一个数其他的数都会变成分子。
2:我们的题目是求是否能变成整除,我们仔细看看,假如我们就在第一个数上加上括号,除了第二个数其他的数全都变成分子,那问题就变成了除了第二个数之外的其他数乘积是否能整除第二个数的而问题。
总结:题目真的很简单,第一个点也是我也开始就想到了的点,但是再想到这个之后我脱离了题目的意思,题目说只要求是不是可以成为整数,那分子越多,分母越少,可能性就越大,我既然知道可以把分母变成分子,那只需要全都变成分子题目就可以很容易的解决。但是我因为脱离了题目,我就把我找到的第一个点,加入到了题目的运算之中,对题目进行了新的运算。注意:要时刻紧跟题目,知道了题目的特点之后,要找如何转换成结果。
代码
#include<iostream>
using namespace std;
typedef long long LL;
const int N = 1e4+5;
int gcd(int a ,int b)
{
return b == 0 ? a : gcd(b , a % b);
}
int main()
{
int t;
cin >> t;
while(t--)
{
int n;
cin >> n ;
int x , y = 1;
int f = 0;
for(int i = 1 ; i <= n ; i ++)
{
LL p;
scanf("%lld",&p);
if(i == 1) x = p;
else if(i == 2) y = p , y = y / gcd( y ,x);
else
{
y = y / gcd( y , p);
if(y == 1)
f = 1;
}
}
if(f)printf("Yes\n");
else printf("No\n");
}
return 0;
}