蓝桥杯第十题,
2016-04-09 14:15
246 查看
没写出来。但是先把大神代码保存下来,以后或许还能学习。这几
天还是挺忙的。
天还是挺忙的。
#include <cstdio> struct FR { long long a; long long b; }; long long gcd( long long x, long long y ) { if ( x > y ) return gcd( y, x ); if ( y % x == 0 ) return x; return gcd( y%x, x ); } FR GCD( FR A, FR B ) { if ( A.a*B.b > A.b*B.a ) return GCD( B, A ); if ( (A.b*B.a) == (A.a*B.b) ) { return A; } long long tmp1 = B.a * A.b; long long tmp2 = B.b * A.a; B.a = tmp1 / gcd(tmp1,tmp2); B.b = tmp2 / gcd(tmp1,tmp2); return GCD( B, A ); } void Q_sort( long long s[], int left, int right ) { int l = left; int r = right; long long flag = s[ left + right >> 1 ]; while ( l <= r ) { while ( s[l] > flag ) l++; while ( s[r] < flag ) r--; if ( l <= r ) { long long tmp; tmp = s[l]; s[l] = s[r]; s[r] = tmp; l++; r--; } } if ( left < r ) Q_sort( s, left, r ); if ( l < right ) Q_sort( s, l, right ); } int main() { int n; scanf( "%d", &n ); long long *x = new long long[n+1]; for ( int i=0; i<n; i++ ) scanf( "%lld", x+i ); Q_sort( x, 0, n-1 ); for ( int i=1; i<n; i++ ) if ( x[i] == x[i-1] ) x[i-1] = -1; Q_sort( x, 0, n-1 ); FR ans, tmp; long long g; ans.a = x[0] / gcd( x[0], x[1] ); ans.b = x[1] / gcd( x[0], x[1] ); for ( int i=2; i<n && x[i]>0; i++ ) { g = gcd(x[i-1],x[i]); tmp.a = x[i-1] / g; tmp.b = x[i ] / g; ans = GCD( ans, tmp ); } printf( "%d/%d\n", ans.a, ans.b ); return 0; }
相关文章推荐
- SVN安装历程
- 一种Java异常传播的静态结构抽取方法
- ArcGIS之3D Analyst
- rails中引入god
- 组合框
- 设计模式-建造者模式
- 带有checkbox的listview的item onItemClick事件无响应问题
- UITableViewCell
- 浅谈机器学习的职业发展方向
- delphi 读网页线程TReadHtmlThread
- poj 3691 DNA repair AC自动机+DP
- SPI接口基本原理与结构
- 使用Spring Boot来加速Java web项目的开发
- 【贪心】Doing Homework again
- bootstrap:前端开发案例Demo(二)
- select函数
- USACO 2.1-The Castle
- 网易笔试题 奖学金
- 单链表反转问题
- 计算机视觉领域的大牛vision guys(按师承关系)