P2651 添加括号III
题目描述
现在给出一个表达式,形如 $a_{1}/a_{2}/a_{3}/.../a_{n}$。
如果直接计算,就是一个个除过去,比如 $1/2/1/4 = 1/8$。
然而小$\text{A}$看到一个分数感觉很不舒服,希望通过添加一些括号使其变成一个整数。一种可行的办法是 $(1/2)/(1/4)=2$ 。
现在给出这个表达式,求问是否可以通过添加一些括号改变运算顺序使其成为一个整数。
输入格式
一个测试点中会有多个表达式。
第一行 $t$ ,表示表达式数量。
对于每个表达式,第一行是 $n$,第二行 $n$ 个数,第 $i$ 个数表示 $a_{i}$。
输出格式
输出 $t$ 行。
对于每个表达式,如果可以通过添加括号改变顺序使其变成整数,那么输出 Yes,否则输出 No。
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
int a[10005]={0};
int n;
cin>>t;
for(int i=1;i<=t;i++){
cin>>n>>a[1]>>a[2];
a[2]/=__gcd(a[1],a[2]);//找a[1],a[2]的最的公因数,直接用"__gcd"函数
for(int i=3;i<=n;i++){
cin>>a[i];
a[2]/=__gcd(a[2],a[i]);//依次找a[i],a[2]的最的公因数
}
if(a[2]==1)cout<<"Yes"<<endl;//如果a[2]是1就输出Yes
else cout<<"No"<<endl;//否则输出No
}
return 0;
}
浙公网安备 33010602011771号