[BZOJ1385][Baltic2000]Division expression

来源:互联网 发布:sql注入漏洞怎么修复 编辑:程序博客网 时间:2024/04/29 06:26

题意


给定x1/x2/x3/x4..../xn,可以加入括号改变运算顺序,询问是否可以使改变后的值为整数。


可知x1必为分母,x2必为分子,x3,x4...xn可以为分子也可以为分母。

可以贪心证明

x1x3x4...x4x2不为整数,那么就没有其他方案使改变后的值为整数。

所以我们只要判断这个值是不是整数就行了,即
判断x2/gcd(x2,x1)/gcd(x2,x3)/.../gcd(x2,xn)是否为1

#include <cstdio>int gcd(int x,int y){return y?gcd(y,x%y):x;}int n,x,y,t;int main(){    for(scanf("%d",&t);t;t--){        scanf("%d%d%d",&n,&y,&x);        x/=gcd(x,y);        for(int i=1;i<=n-2;i++){            scanf("%d",&y);            x/=gcd(x,y);        }        if(x==1) puts("YES");else puts("NO");    }    return 0;}
0 0
原创粉丝点击