「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;
}
「BZOJ1385」「Baltic2000」Division expression 解题报告的更多相关文章
- 「SHOI2016」黑暗前的幻想乡 解题报告
「SHOI2016」黑暗前的幻想乡 sb题想不出来,应该去思考原因,而不是自暴自弃 一开始总是想着对子树做dp,但是状态压不起去,考虑用容斥消减一些条件变得好统计,结果越想越乱. 期间想过矩阵树定理, ...
- 「ZJOI2015」地震后的幻想乡 解题报告
「ZJOI2015」地震后的幻想乡 想了半天,打开洛谷题解一看,最高票是_rqy的,一堆密密麻麻的积分差点把我吓跑. 据说有三种解法,然而我只学会了一种最辣鸡的凡人解法. 题意:给一个无向图\(G\) ...
- 「SCOI2014」方伯伯的玉米田 解题报告
#2211. 「SCOI2014」方伯伯的玉米田 发现是取一个最长不下降子序列 我们一定可以把一个区间加的右端点放在取出的子序列的最右边,然后就可以dp了 \(dp_{i,j}\)代表前\(i\)个玉 ...
- 「洛谷P1306」斐波那契公约数 解题报告
P1306 斐波那契公约数 题目描述 对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很"简单"问题:第n项和第m项的最大公 ...
- 「洛谷P2397」 yyy loves Maths VI (mode) 解题报告
P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...
- 「USACO11NOV」牛的障碍Cow Steeplechase 解题报告
题面 横的,竖的线短段,求最多能取几条没有相交的线段? 思路 学过网络流的童鞋在哪里? 是时候重整网络流雄风了! 好吧,废话不多说 这是一道最小割的题目 怎么想呢? 要取最多,那反过来不就是不能取的要 ...
- 「Luogu P2508」[HAOI2008]圆上的整点 解题报告
题面 给定圆的半径,求圆上整点数 这是一道很Nice的数学题!超爱!好吧,由于这道题,我去Study了一下复数(complex number)复杂的数 真棒!!! 有兴趣的戳这里!!!\(\huge ...
- 【BZOJ】【1385】【Baltic2000】Division expression
欧几里得算法 普通的求个gcd即可……思路题 因为要求尽量是整数……所以 $\frac{x_1}{x_2*x_3*x_4*....*x_n}$是最大的结果了,因为$x_2$必须为分母,$x_1$必须为 ...
- 「kuangbin带你飞」专题十四 数论基础
layout: post title: 「kuangbin带你飞」专题十四 数论基础 author: "luowentaoaa" catalog: true tags: mathj ...
随机推荐
- ASCII代码表
>>ASCII代码表<<
- Python基础10 回顾
从最初的"Hello World",走到面向对象,该回过头来看看,教程中是否遗漏了什么. 我们之前提到一句话,"Everything is Object".那么 ...
- linux 端口映射设置
iptables -t nat -A PREROUTING -p tcp --dport 新端口 -j REDIRECT --to-ports 旧端口
- poj 1092 Farmland (Geometry)
1092 -- Farmland 怎么最近做几何题都这么蛋疼,提交C++过不了交G++就过了.据我估计,原因是用了atan2这个函数,或者是其他一些函数造成了精度的影响.不管怎样,这题最后还是过了~ ...
- H3C 路由器SSH服务配置命令(续)
- css设置Overflow实现隐藏滚动条的同时又可以滚动
.scroll-list ul{ white-space: nowrap; -webkit-overflow-scrolling: touch; overflow-x: auto; overflow- ...
- [kuangbin带你飞]专题九 连通图B - Network UVA - 315
判断割点的性质: 如果点y满足 low[y]>=dfn[x] 且不是根节点 或者是根节点,满足上述式子的有两个及其以上. 就是割点 如果是起点,那么至少需要两个子节点满足上述条件,因为它是根节点 ...
- 2018-11-19-win10-uwp-使用-Matrix3DProjection-进行-3d-投影
title author date CreateTime categories win10 uwp 使用 Matrix3DProjection 进行 3d 投影 lindexi 2018-11-19 ...
- ThinkPHP商城实战
ThinkPHP3.2.3商城实战教程,需要的联系我,QQ:1844912514 千万级php电商秒杀项目实战 ,需要的联系我,QQ:1844912514
- java基本类型和String之间的转换
String → 基本类型,除了Character外所有的包装类提供parseXxx(String s)静态方法,用于把一个特定的字符串转换成基本类型变量: 基本类型 → String,String ...