最大比例

题意

给出一个等比数列中的几项,求出符合这几项的最大等比值。

思路

这几项排序、去重之后,按照通项公式写出来,第i个数 :第一个数 = r^k。
其中r为一个比例,其gcd(分子,分母)= 1.。那么构成一个新数列,这个数列为:(p/q)k1 , (p/q)k2 ,(p/1)k3
转化为:求这个新数列的最大公约数,因为有指数的形式,采用 更相减损术求这些指数的最大公约数。

代码

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define mst(s,_s) memset(s, _s, sizeof(s))
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 0x3f3f3f3f;
const int N = 1e6+100;
int T,n,m;ll a[N],_a[N];
int cnt;ll gcd(ll a,ll b)
{return !b?a:gcd(b,a%b);
}
ll up[N],down[N];ll _gcd(ll a,ll b)
{if(a<b) swap(a,b);if(b==1 ) return a;return _gcd(b,a/b);
}
int main() {cin>>n;for(int i=0;i<n;i++) cin>>a[i];sort(a,a+n);for(int i=0;i<n;i++){int j=i;while(a[i]==a[j]){j++;}_a[cnt++]=a[i];i=j-1;}n=cnt;for(int i=1;i<n;i++){ll d=gcd(_a[0],_a[i]);up[i]=_a[i]/d;down[i]=_a[0]/d;}ll _up=up[1],_down=down[1];for(int i=1;i<n;i++){_up=_gcd(up[i],_up);_down=_gcd(down[i],_down);}cout<<_up<<"/"<<_down<<endl;return 0;
}```

最大比例【更相减损术】相关推荐

  1. acwing 1223.最大比例(更相减损术)

    X星球的某个大奖赛设了 M 级奖励. 每个级别的奖金是一个正整数. 并且,相邻的两个级别间的比例是个固定值. 也就是说:所有级别的奖金数构成了一个等比数列. 比如:16,24,36,54,其等比值为: ...

  2. 初等数论--整除--欧几里得算法/辗转相除法/更相减损术

    初等数论--整除--欧几里得算法/辗转相除法/更相减损术 欧几里得算法/辗转相除法/更相减损术 博主本人是初学初等数论(整除+同余+原根),本意是想整理一些较难理解的定理.算法,加深记忆也方便日后查找 ...

  3. 五十六、从高中碾转相除法、更相减损术算法谈起

    @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题代码化. ---- Runsen 先问你们一个小学问题:如何求两个整数的最大公约数? 曾经见过不少的算法题 ...

  4. jzoj3793,P2090-数字对【更相减损术,欧几里得算法,数论】

    正题 题目链接: https://www.luogu.org/problemnew/show/P2090 大意 一个数对(a,b),每次可以变为(a+b,b)或(a,a+b).然后要求一个数对中有n求 ...

  5. 《九章算术》中更相减损术----求最大公约数

    更相减损法:也叫更相减损术,是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合. #include<stdio.h> in ...

  6. Python使用更相减损术计算两个整数的最大公约数

    更相减损术是<九章算术>中给出的一种用于约分的方法,也可以用来计算最大公约数,其步骤为: 1)如果两个整数都是偶数,就使用2约简,直到两个整数不再都是偶数,然后执行第2步.如果两个整数不都 ...

  7. 【原创】更相减损术 stein算法 欧几里得算法 拓展欧几里得算法 扩展欧几里得算法 逆元的计算与筛法 解模线性方程

    欧几里得 说在前面 数论学复习 Part 6. 然后再来一章CRT和组合数,就飞往概率,以此为跳板去向DP. 计划很美啊你. P.S. 这么说来拉格朗日插值可以说是数论学复习的Part 0了啊. 有一 ...

  8. 更相减损术--最大公约数

    题目: 更相减损术 ,哈哈,我们今天来看一道稍微复杂一点的题嘛,这是选自codeforce上的一道题,好了,我们一起来看看题意吧: 题目描述是复制的,可能有部分显示不对,我就把题目链接放下面! 题目链 ...

  9. C++算法:辗转相除法与更相减损术

    辗转相除法与更相减损术 1.我们已经学过求最大公因数的知识,你能求出18与30的公因数吗? 2.如果公因数比较大而且根据我们的观察又不能得到一些公因数,我们又应该怎样求它们的最大公因数?比如求8251 ...

最新文章

  1. 软件测试理论你知道多少?
  2. TLS与SSL之间关系——SSL已经被IEFT组织废弃,你可以简单认为TLS是SSL的加强版
  3. 北交大计算机学院教授,北京交通大学计算机与信息技术学院研究生导师:鲁凌云...
  4. Python第二天学习
  5. zen cart 操作-修改
  6. 读《一个程序猿的生命周期》有感
  7. 【DP】HDU 2189 悼念512汶川大地震遇难同胞——来生一起走
  8. python中文字符串排序问题_Python字符串排序
  9. 【Stanford CNN课程笔记】5. 神经网络解读1 几种常见的激活函数
  10. 最新版千月后台漏洞修复源码分享
  11. 汇编语言——偏移地址超过有效地址FFFFH
  12. 2个最好的中文图标搜索引擎
  13. 单片机c语言编写音乐播放器,51单片机c语言编写电子琴+音乐播放器.doc.doc
  14. 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(4)-- Controller Architecture
  15. 如何确认电脑USB口哪个快(USB 3.0 3.2 Gen1 Gen2)
  16. Python调用OpenCV实现图像平滑处理
  17. 苹果浏览器之简单应用
  18. kotlin和java相互转换的实操
  19. android传感器数据流程
  20. python微博评论情感分析_Python采集微博热评进行情感分析祝你狗年脱单

热门文章

  1. 人工智能数学基础---定积分9:无界函数反常积分审敛法以及无界函数Γ函数介绍
  2. 二叉树经典例题的题解
  3. 微信理财通和余额宝哪个好
  4. 如果地球是方的,环球旅行该怎么规划?
  5. 乌班图 小新pro_联想小新Pro13 2020锐龙版R7 4800U安装ubuntu-20.04
  6. 【Unity】Unity 3D中的内存管理
  7. 开发问题记录 4个 (微信无法获取头像和昵称)
  8. 开发一个理财软件 C#
  9. e6b 飞行计算机教程,运动的E6B飞行计算机
  10. Color Coherence Vector