[Daimayuan] 添加括号(C++,数学)

这篇具有很好参考价值的文章主要介绍了[Daimayuan] 添加括号(C++,数学)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

现在给出一个表达式,形如 a 1 / a 2 / a 3 / . . . / a n a_1/a_2/a_3/.../a_n a1/a2/a3/.../an

如果直接计算,就是一个个除过去,比如 1 / 2 / 1 / 4 = 1 / 8 1/2/1/4=1/8 1/2/1/4=1/8

然而小 A A A 看到一个分数感觉很不舒服,希望通过添加一些括号使其变成一个整数。一种可行的办法是 ( 1 / 2 ) / ( 1 / 4 ) = 2 (1/2)/(1/4)=2 (1/2)/(1/4)=2

现在给出这个表达式,求问是否可以通过添加一些括号改变运算顺序使其成为一个整数。

输入格式

一个测试点中会有多个表达式。

第一行 t t t ,表示表达式数量。

对于每个表达式,第一行是 n n n,第二行 n n n 个数,第 i i i 个数表示 a i a_i ai

输出格式

输出 t t t 行。

对于每个表达式,如果可以通过添加括号改变顺序使其变成整数,那么输出 Y e s Yes Yes,否则输出 N o No No

数据范围

2 ≤ n ≤ 10000 2≤n≤10000 2n10000, 1 ≤ t ≤ 100 1≤t≤100 1t100, 1 ≤ a i ≤ 2 31 − 1 1≤a_i≤2^{31}−1 1ai2311

输入样例
2
4
1 2 1 4
5
6 5 7 9 12
输出样例
Yes
No
解题思路

通过不同的加括号方法,可以发现以下几个规律:

(1)第一个数必定是分子;

(2)第二个数必然是分母;

(3)从第三个数开始,任意数都可以成为分子,且互不影响。

同时,很容易知道:分子越多,分母越少,越容易形成整数。

那么我们的算法实现就很简单了:用其他所有数的乘积去尝试整除第二个数。

最后,AC代码如下:文章来源地址https://www.toymoban.com/news/detail-450847.html

#include <iostream>
using namespace std;

int main() {
	int t, n;
	long long a1, a2, sum;
	bool flag;
	cin >> t;
	for (int i = 0; i < t; i++) {
		cin >> n;
		a1 = a2 = -1;
		sum = 1;
		flag = false;
		for (int i = 0; i < n; i++) {
			if (i == 1) {
				cin >> a2;
			}
			else {
				cin >> a1;
				sum *= a1;
			}
			
			if (a2 != -1) {
				sum %= a2;
				if (sum == 0) {
					flag = true;
				}
			}
		}
		if (flag) cout << "Yes" << endl;
		else cout << "No" << endl;
	}
	return 0;
}

到了这里,关于[Daimayuan] 添加括号(C++,数学)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Daimayuan] 碰撞2(C++,模拟)

    在 x O y xOy x O y 坐标系中有 N N N 个人,第 i i i 个人的位置是 ( X i , Y i ) (X_i,Y_i) ( X i ​ , Y i ​ ) ,并且每个人的位置都不同。 我们有一个由 L 和 R 组成的长为 N N N 的字符串 S S S , S i = S_i= S i ​ = R 代表第 i i i 个人面向右, S i = S_i= S i ​ = L 代表第 i i i 个人面向左。 现在所

    2023年04月09日
    浏览(35)
  • [Daimayuan] 吃糖果(C++,贪心)

    桌子上从左到右放着 n n n 个糖果。糖果从左到右编号,第 i i i 块糖果的重量为 w i w_i w i ​ 。小明和小红要吃糖果。 小明从左边开始吃任意数量的糖果。(连续吃,不能跳过糖果) 小红从右边开始吃任意数量的糖果。(连续吃,不能跳过糖果) 当然,如果小明吃了某个糖果

    2024年02月02日
    浏览(44)
  • 正则表达式-分组括号以及捕获分组

    在java正则表达式中,( )是分组的意思,每组都有一个组号 只看左括号,不看右括号,按照左括号的顺序,从左往右,依次为第一组,第二组,第三组等等,如图: 根据左括号分成了三组 捕获分组,非捕获分组 可以获取某一组中的内容反复使用 规则: 正则表达式内部使

    2024年01月22日
    浏览(103)
  • [Daimayuan] 最短路计数(C++,DP,图论)

    题目描述 给出一个 N N N 个顶点 M M M 条边的无向无权图。 问从顶点 1 1 1 开始,到其他每个点的最短路有几条。 输入格式 第 1 1 1 行包含两个正整数 N N N , M M M 。 接下来 M M M 行,每行两个正整数 x , y x,y x , y 表示存在一条由顶点 x x x 到顶点 y y y 的边。(可能存在重边和自环

    2023年04月22日
    浏览(38)
  • [Daimayuan] 三段式(C++,数组前缀和)

    有一个长度为 n n n 的序列,现在我们想把它切割成三段(每一段都是连续的),使得每一段的元素总和都相同,请问有多少种不同的切割方法 输入描述 第一行给出一个数 n n n ,( 1 ≤ n ≤ 1 0 5 1≤n≤10^5 1 ≤ n ≤ 1 0 5 ) 第二行给出序列 a 1 a_1 a 1 ​ , a 2 a_2 a 2 ​ , a 3 a_3 a 3 ​

    2024年02月05日
    浏览(37)
  • 正则表达式中的方括号[]有什么用?

    在正则表达式中,方括号 [] 是用于定义字符集合的元字符。它在正则表达式中有以下作用: 匹配字符集合中的任意一个字符 :方括号中列出的字符,表示在这个位置可以匹配这些字符中的任意一个。例如, [abc] 将匹配任意一个字符是 “a”、“b” 或 “c” 的位置。 指定字

    2024年02月14日
    浏览(38)
  • SED正则表达式中[方括号]的特殊处理

    今天被这个方括号懵晕了,特此记录 例如: 去除输入字符串“1[2.3]4[ab,c]”中的所有方括号和逗号: $ echo \\\"1[2.3]4[ab,c]\\\"|sed -e \\\"s/[,][]//g\\\" 1[2.3]4[ab,c]   It doesn\\\'t work! 原因:Regular Expressions The right-square-bracket ( \\\']\\\' ) shall lose its special meaning and represent itself in a bracket expression if it oc

    2024年02月14日
    浏览(40)
  • 【算法入门】 有效括号序列|逆波兰表达式求值|点击消除

    ✅作者简介:热爱后端语言的大学生,CSDN内容合伙人 ✨精品专栏:C++面向对象 🔥系列专栏:算法百炼成神 本专栏收录的均为牛客网的算法题目,内含链表、双指针、递归、动态规划、基本数据结构等算法思想的具体运用。牛客网不仅有大量的经典算法题目,也有大厂的面

    2024年02月12日
    浏览(41)
  • java正则表达式匹配替换大括号变量${}和替换${}变量的值

    java正则表达式替换“$ {}”特殊字符并还原,以及java正则表达式替换${}变量为变量的值这两种操作的代码示例。 正则表达式还是非常有用的, 可以耐心看下定义,多尝试下。 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将

    2024年02月02日
    浏览(61)
  • 【数据结构】【栈(stack)应用】四则运算表达式求值(带括号)

            先理解原理,再看代码,注意标红字体很重要!结尾附完整测试代码,C语言实现! 更新留言:         本来是侧重演示栈结构的使用,后面评论区发现很多朋友对这个四则运算比较感兴趣,特此做了更新,新增了对负数的运算支持。         若您也有新的想法

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包