txh0609

导航

 

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

posted on 2026-04-08 10:42  txh0609  阅读(2)  评论(0)    收藏  举报