题面
除法表达式有如下的形式: x1/x2/x3…/xk 其中xi是正整数且xi<=1000000000(1<=i<=k,k<=10000) 除法表达式应当按照从左到右的顺序求,例如表达式1/2/1/2的值为1/4.但可以在表达式中国入括号来改变计算顺序,例如(1/2)/(1/2)的值为1.现给出一个除法表达式e,求是告诉是否可以通过增加括号来使其为e’,e’为整数。
输入格式
先给出一个数字d,代表有d组数据. 每组数据先给出一个数字n,代表这组数据将有n个数。 接下来有n个数,分别代表x1,x2,x3,…,xn。
输出格式
如果能使得表达式的值为一个整数,则输出yes.否则为no。
样例
![[BZOJ1385] [Baltic2000] Division expression](https://www.ctvol.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
2 4 1 2 1 2 3 1 2 3
输入
![[BZOJ1385] [Baltic2000] Division expression](https://www.ctvol.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
yes no
输出
思路
打个比方,x1/x2/x3=x1/(x2/x3)=x1*x3/x2
易证得x2定为分母,只要其他数都能被s2整除即可(gcd).
代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 long long n,t,s[100000],sum; 4 int main(){ 5 cin>>n; 6 while (n--){ 7 cin>>t; 8 for (int i=1;i<=t;i++) cin>>s[i]; 9 for (int i=1;i<=t;i++) if (i!=2)s[2]/=__gcd(s[i],s[2]); 10 if (s[2]==1) cout<<"yesn";else cout<<"non"; 11 } 12 return 0; 13 }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/608333.html