当前位置: 首页 > news >正文

「BZOJ1385」「Baltic2000」Division expression 解题报告

Division expression

Description

除法表达式有如下的形式: \(X_1/X_2/X_3.../X_k\) 其中Xi是正整数且\(X_i \le 1000000000(1 \le i \le k,K \le 10000)\) 除法表达式应当按照从左到右的顺序求,例如表达式1/2/1/2的值为1/4.但可以在表达式中加入括号来改变计算顺序,例如(1/2)/(1/2)的值为1.现给出一个除法表达式E,求是告诉是否可以通过增加括号来使其为E',E'为整数。

Input

先给出一个数字D,代表有D组数据. 每组数据先给出一个数字N,代表这组数据将有N个数。 接下来有N个数

Output

如果能使得表达式的值为一个整数,则输出YES.否则为NO

Sample Input

2
4
1
2
1
2
3
1
2
3

Sample Output

YES
NO

思路

观察这个式子\(E = X_1 / X_2 / X_3 .... / X_n\)

我们设\(E' = X_{a1} * X_{a2}..../ X_{b1} / X_{b2}....\)

即把加括号后的式子改成分数线的形式,有一些元素属于分子,其他的元素属于分母。

我们发现:

  • \(X_1\) 不得不在分子 没有为什么 就是不可以
  • \(X_2\) 不得不在分母 因为你想让它去分母它也不可能到分母
  • \(X_3 \ to \ X_n\) 可在分子也可在分母 总是有办法的QAQ

如果叫你把\(X_3 \ to \ X_n\)分一部分在分子,其他的在分母,你会怎么做?? 当然是把全部元素放在分子呗。。。

因此最优的 \(E' = X_1 * X_3 * X_4....* X_n / X_2\)

如果真的乘起来的话肯定会溢出,所以当然要用GCD。

清爽的30行代码$(~ ̄▽ ̄)~ $

代码

#include<cstdio>
using namespace std;
#define MAXN 10005

int T;
int n, t, s;

int gcd( int x, int y ){
    return x % y == 0 ? y : gcd( y, x % y );
}

int main(){
    scanf( "%d", &T );
    while( T-- ){
        scanf( "%d", &n );
        scanf( "%d", &t );
        if ( n == 1 ){//注意特判
            printf( "YES\n" ); continue;
        }
        scanf( "%d", &s );
        s /= gcd( s, t );
        for ( int i = 3; i <= n; ++i ){
            scanf( "%d", &t );
            s /= gcd( s, t );
        }
        if ( s == 1 ) printf( "YES\n" );
        else printf( "NO\n" );
    }
    return 0;
}

转载于:https://www.cnblogs.com/louhancheng/p/10060719.html

相关文章:

  • IBM提出8位深度网络训练法,提速4倍同时保持高精度
  • shell脚本中 [-eq] [-ne] [-gt] [-lt] [ge] [le]
  • PEM_密钥对生成与读取方法
  • nginx 根据域名和地址跳转
  • go语言渐入佳境[11]-function2
  • (三)从jvm层面了解线程的启动和停止
  • Apache https
  • 项目实战-Api的解决方案
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • 五个举措:现代化Jenkins 和终结“Jenkinsteins”
  • Vue官网教程学习过程中值得记录的一些事情
  • sass安装
  • LGPL与闭源程序
  • 聊聊flink的checkpoint配置
  • 堆的python实现及其应用
  • [译] React v16.8: 含有Hooks的版本
  • 【Leetcode】104. 二叉树的最大深度
  • Angular 响应式表单 基础例子
  • go语言学习初探(一)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • js写一个简单的选项卡
  • leetcode98. Validate Binary Search Tree
  • Python 基础起步 (十) 什么叫函数?
  • REST架构的思考
  • SQLServer之创建显式事务
  • vue:响应原理
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • VuePress 静态网站生成
  • vue中实现单选
  • win10下安装mysql5.7
  • 编写符合Python风格的对象
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 无服务器化是企业 IT 架构的未来吗?
  • 7行Python代码的人脸识别
  • ​​​​​​​​​​​​​​Γ函数
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • #define
  • (06)Hive——正则表达式
  • (3)选择元素——(17)练习(Exercises)
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (简单) HDU 2612 Find a way,BFS。
  • (南京观海微电子)——COF介绍
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)母版页和相对路径
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net framework4与其client profile版本的区别
  • .Net8 Blazor 尝鲜
  • .net中的Queue和Stack