题目描述
题解
x1一定为分子,x2一定为分母,其他的都可以通过加括号移到分母上去。
所以只需要判断x2能不能被其他的数消掉即可,这个过程可以用gcd。
代码
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int max_n=1e4+5;
int T,n,k,t;
int a[max_n];
inline int gcd(int a,int b){
if (!b) return a;
else return gcd(b,a%b);
}
int main(){
scanf("%d",&T);
while (T--){
scanf("%d",&n);
scanf("%d",&a[1]);
scanf("%d",&k);
for (int i=1;i<=n-2;++i)
scanf("%d",&a[i+1]);
for (int i=1;i<n;++i){
int t=gcd(k,a[i]);
k/=t;
if (k==1){
printf("YES\n");
break;
}
}
if (k!=1) printf("NO\n");
}
}
总结
这种题该怎么做?
多写写画画吧,说不定能看出一个比较简单的规律。
就像这道题,我觉得我一般是不会朝那个方向考虑的= =但是感受一下确实是这样。