最大比例

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

现在,我们随机调查了一些获奖者的奖金数。
请你据此推算可能的最大的等比值。

输入格式:
第一行为数字 N
第二行N个正整数Xi(Xi<1 000 000 000 000),用空格分开。每个整数表示调查到的某人的奖金数额

要求输出:
一个形如A/B的分数,要求A、B互质。表示可能的最大比例系数

测试数据保证了输入格式正确,并且最大比例是存在的。

例如,输入:
3
1250 200 32

程序应该输出:
25/4

再例如,输入:
4
3125 32 32 200

程序应该输出:
5/2

再例如,输入:
3
549755813888 524288 2

程序应该输出:
4/1

资源约定:
峰值内存消耗 < 256M
CPU消耗 < 3000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。
解析:题意很好懂,关键是怎么求a(a可以求若干次方得到两个数),这里用辗转相除就好了

#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define pb push_back
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rep1(i,b,a) for(int i=b;i>=a;i--)
using namespace std;
const int N=110;
ll arr[N];
ll gcd(ll a,ll b)
{if(a<b)swap(a,b);return b==0?a:gcd(b,a%b);
}
ll fi(ll a,ll b)
{if(a<b)swap(a,b);if(a==b)return a;elsereturn fi(b,a/b);
}
int main()
{int n;cin>>n;set<ll>st;rep(i,0,n){ll a;cin>>a;st.insert(a);}int cnt=0;for(set<long long>::iterator it=st.begin();it!=st.end();it++){arr[cnt++]=*it;}if(cnt==1){cout<<"1/1"<<endl;return 0;}ll e=gcd(arr[0],arr[1]);ll a=arr[0]/e,b=arr[1]/e,c,d;for(int i=1;i<cnt-1;i++){e=gcd(arr[i],arr[i+1]);c=arr[i]/e;d=arr[i+1]/e;a=fi(a,c);b=fi(b,d);}cout<<b<<"/"<<a<<endl;return 0;
}

转载于:https://www.cnblogs.com/ffgcc/p/10546467.html

最大比例(辗转相除)相关推荐

  1. 辗转相除以及辗转相减法

    文章目录 前言 辗转相除法(又名欧几里算法) 辗转相减法(又名更相减损法) 原始辗转相减法 改版辗转相减法(减的是指数) 参考文章 前言 在学习Acwing c++蓝桥杯辅导课第八讲数论-AcWing ...

  2. c语言求出两个最大素数,求两个正整数的最大公约数      思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法。通式分别为 f(x, y) = f(y, x%y...

    求两个正整数的最大公约数 思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法.通式分别为 f(x, y) = f(y, x%y), f(x, y) = f(y, x - y) ( ...

  3. C语言 递归实现辗转相除法 和 辗转相减法

    假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里德算法,是这样进行的: 1997 / 615 = 3 (余 152) 615 / 152 = 4(余7) 152 / 7 = 21(余 ...

  4. 辗转相除求最大公约数

    描述:计算两个非负整数 p 和 q 的最大公约数:若 q 是 0,则最大公约数为 p.否则,将 p 除以 q 得到余数 r,p 和 q 的最大公约数即为 q 和 r 的最大公约数. <span ...

  5. [Luogu1891]疯狂LCM[辗转相减法]

    题意 多组询问,每次给定 \(n\) ,求:\(\sum_{i=1}^nlcm(i,n)\) . \(\rm T \leq 3\times 10^4\ ,n \leq 10^6\). 分析 推式子: ...

  6. bzoj1876 [SDOI2009]SuperGCD 辗转相减+高精

    这个题是给有数竞基础的人出的吧,不然没法做 辗转相减法+优化,这个题卡时,要压1000 注: 1.赋值顺序 2.特判 3.手残 码: #include<iostream> #include ...

  7. 求最大公约数(辗转相除)

    在辗转相除求最大公约数的时候,不需要 判断这两个数的大小 #include<stdio.h> int gcd(int m,int n);int main() {int m,n;scanf( ...

  8. 【C/C++】最大公约数和最小公倍数(辗转相除、更相减损、stein)

    一.最大公约数和最小公倍数 数学性质: 如果b是A和B的公约数,那么:b也是A+B的约数,即b是A,B,A+B的公约数.b也是A-B的约数,即b是A,B,A-B的公约数.更一般地,对于任意整数x.y, ...

  9. 辗转相除求最大公约数,最大公倍数

    上次笔试考到这个,不知道辗转相除什么意思,用短除法做的,回来查了一下才知道 辗转相除法也叫欧几里德算法,这是原理 例如,求(319,377): ∵ 377÷319=1(余58) ∴(377,319)= ...

最新文章

  1. Android开发之dp转像素,像素转换为dp工具类,详细代码,带有源文件下载地址。...
  2. 如何反转 Python 中的字符串
  3. vue动态生成下拉框_vue+elementui 动态创建下拉框
  4. shell 自动输入密码
  5. php软件开发--vue基础
  6. HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP错误解决方法
  7. mac下载安装adb环境
  8. JAVA项目一 家庭收支记账软件
  9. 下载百度个性地图瓦片
  10. Layout-pcb之天线设计
  11. OpenGL多重纹理使用与理解
  12. 【maven】maven简介
  13. 计算机领域区块链是什么是意思,为什么区块链瑞普顿RXP是不可篡改的
  14. 使用BBED恢复DELETE的数据
  15. SAP:调用函数显示MIGO界面
  16. 2020年第三方铁塔数据大汇总,全年新增超4900座
  17. 子墨对酒《三国杀》里论模式(伍)模板方法
  18. 如何优雅的配置 Java 微服务
  19. 嘉立创SMT贴片打板流程
  20. stress 压力测试工具

热门文章

  1. [ZZ]:44本计算机经典书籍
  2. Android 隐藏手机虚拟按键
  3. eclipse创建maven项目没有maven dependence
  4. 国际化姿态迎接G20 浙江建设智慧城市
  5. poj1737 Connected Graph
  6. 定点乘法器优化---华为杯
  7. 不自律的人,怎样才能完成计划
  8. CH340在STM32实现一键下载电路的理解
  9. python 自动发微博_Python 教你自动发微博,每日一句英语
  10. 神仙尬聊!哲学马云VS科技马斯克:生活就该每周工作12小时,开特斯拉玩遍三千城市