您的位置:首页 > 其它

[BZOJ1385][Baltic2000]Division expression(gcd)

2016-04-02 10:39 316 查看

题目描述

传送门

题解

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");
}
}


总结

这种题该怎么做?

多写写画画吧,说不定能看出一个比较简单的规律。

就像这道题,我觉得我一般是不会朝那个方向考虑的= =但是感受一下确实是这样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: