码迷,mamicode.com
首页 > 其他好文 > 详细

【BZOJ】【1385】【Baltic2000】Division expression

时间:2015-02-01 11:56:26      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

欧几里得算法

  普通的求个gcd即可……思路题

  因为要求尽量是整数……所以 x1/(x2/x3/x4..../xn)是最大的结果了,因为x2必须为分母,x1必须为分子……x3~xn可分子可分母,所以都丢到分子上,结果ans为整数的可能性最大=。=因为如果放下去相当于 ans/(xi^2) 嗯……应该很好理解- -

技术分享
 1 /**************************************************************
 2     Problem: 1385
 3     User: Tunix
 4     Language: C++
 5     Result: Accepted
 6     Time:120 ms
 7     Memory:1664 kb
 8 ****************************************************************/
 9  
10 //BZOJ 1385
11 #include<cstdio>
12 #include<cstring>
13 #include<cstdlib>
14 #include<iostream>
15 #include<algorithm>
16 #define rep(i,n) for(int i=0;i<n;++i)
17 #define F(i,j,n) for(int i=j;i<=n;++i)
18 #define D(i,j,n) for(int i=j;i>=n;--i)
19 using namespace std;
20 int getint(){
21     int v=0,sign=1; char ch=getchar();
22     while(ch<0||ch>9){ if (ch==-) sign=-1; ch=getchar();}
23     while(ch>=0&&ch<=9){ v=v*10+ch-0; ch=getchar();}
24     return v*=sign;
25 }
26 /******************tamplate*********************/
27 int x[100086];
28 inline int gcd(int a,int b){return b==0 ? a : gcd(b,a%b);}
29 int main(){
30     int T=getint();
31     while(T--){
32         int n=getint();
33         F(i,1,n) x[i]=getint();
34         x[2]/=gcd(x[2],x[1]);
35         F(i,3,n){
36             x[2]/=gcd(x[2],x[i]);
37             if (x[2]==1) {puts("YES");break;}
38         }
39         if (x[2]!=1) puts("NO");
40     }
41     return 0;
42 }
View Code

 

【BZOJ】【1385】【Baltic2000】Division expression

标签:

原文地址:http://www.cnblogs.com/Tunix/p/4265313.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!