【蓝桥杯】 最大比例
题目描述
X星球的某个大奖赛设了M级奖励。每个级别的奖金是一个正整数。
并且,相邻的两个级别间的比例是个固定值。
也就是说:所有级别的奖金数构成了一个等比数列。比如:16,24,36,54 其等比值为:3/2
现在,我们随机调查了一些获奖者的奖金数。
请你据此推算可能的最大的等比值。
输入格式:
第一行为数字 N (0<N<100),表示接下的一行包含N个正整数
第二行N个正整数Xi(Xi<1 000 000 000 000),用空格分开。每个整数表示调查到的某人的奖金数额
要求输出:
一个形如A/B的分数,要求A、B互质。表示可能的最大比例系数
输入样例
3
1250 200 32
输出
25/4
思路
根据题目描述,随机调查的奖金是等比数列中的某项,那么这些奖金可能值是重复的,所以我们要对数据 先排序,后去重
再来研究一下等比数列
有这样一组等比数列:a1, a2, a3 ,a4 …… an-1 ,an
假设我们挑出来的奖金是:a1 ,ax , ay ,ak (注:首项就可看作a1,该序列已经排序去重)
我们要求奖金的最大比值,设为 q (等比且非递减,虽然题上没有说,但奖金怎么非递减呢)
那么根据等比数列的性质,ax = a1 × qx,ay =a1× qy ,ak = a1× qk
那么他们之间两两相邻的比值为 qx ,qy-x ,qk-x-y
qx ,qy-x ,qk-x-y 它们之间有一个性质:若 q 为分数,若q[ i ] > q[ j ] ,那么q[ i ] 的分子一定大于q[ j ] 的分子,q[ i ] 的分母也大于 q[ j ] 的分母;若 q 为整数,q[ i ]分子还是比q[ j ]大(因为奖金等比且非递减,虽然题上没有说,但奖金怎么递减呢 )
所以对于求出的 qx ,qy-x ,qk-x-y 可以根据此性质从按照分子的大小从小到大排序。
对于求出的序列 q 集合 ,假设幂次为 ki ,那我们就是要求出 k 的最大公约数。q 和 k 都是未知数 。我们设 q 中的两个数为 a,b 。对于a,b 我们要求出一组解。
Q(a , b) => Q (qx , qy) ==> qgcd(x,y) == 更相减损术 ==>q gcd(x,y-x) ==> Q(a,b/a) { b>a }
long long qgcd(long long a,long long b){if(a==b)return a;else{return qgcd(min(b/a,a),max(b/a,a));}}
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<queue>
struct node{long long x,y;// x为 分子 ,y 为分母
};
long long getGcd(long long a,long long b){return b==0?a:getGcd(b,a%b);
}bool comp(node a,node b) {return a.x<b.x;
}
using namespace std;
int main()
{int n;scanf("%d",&n);;long long arr[10010];for(int i=0;i<n;i++){scanf("%lld",&arr[i]);}//去重操作 sort(arr,arr+n);vector<long long>v;v.push_back(arr[0]); for(int i=1;i<n;i++){if(v[v.size()-1]!=arr[i])v.push_back(arr[i]);}vector<node>q;node temp;for(int i=1;i<v.size();i++){ //求出比例 long long gcd = getGcd(v[i],v[i-1]);temp.x=v[i]/gcd;temp.y=v[i-1]/gcd;q.push_back(temp);}sort(q.begin(),q.end(),comp);long long minx=q[0].x;//q是分数 分子分母决定大小 q为整数 分子同样也能决定大小 ,分母为 1 long long x=q[0].x,y=q[0].y;for(int i=1;i<q.size();i++){if(minx>q[i].x/q[i-1].x&&q[i].x/q[i-1].x!=1){ //如果分子相同 那么分母也相同 否则不等比 x=q[i].x/q[i-1].x;y=q[i].y/q[i-1].y;}}printf("%lld/%lld",x,y);return 0;
}
【蓝桥杯】 最大比例相关推荐
- 蓝桥杯最大比例java实现
最大比例 X星球的某个大奖赛设了M级奖励.每个级别的奖金是一个正整数. 并且,相邻的两个级别间的比例是个固定值. 也就是说:所有级别的奖金数构成了一个等比数列.比如: 16,24,36,54 其等比值 ...
- 蓝桥杯-最大比例-python
题目 X星球的某个大奖赛设了M级奖励.每个级别的奖金是一个正整数. 并且,相邻的两个级别间的比例是个固定值. 也就是说:所有级别的奖金数构成了一个等比数列.比如: 16,24,36,54 其等比值为: ...
- 蓝桥杯2016c++A组真题代码第十题最大比例
蓝桥杯2016c++A组真题&代码第十题最大比例 /* 最大比例X星球的某个大奖赛设了M级奖励.每个级别的奖金是一个正整数. 并且,相邻的两个级别间的比例是个固定值. 也就是说:所有级别的奖金 ...
- 2016蓝桥杯A组第十题 最大比例
最近准备蓝桥杯比赛,看了去年蓝桥杯A组初赛的试题,最后一题花费了很多时间才找到思路.本人也是刚学习算法,很多都不懂,只好班门弄斧,各位大牛见笑了. 直接上题: X星球的某个大奖赛设了M级奖励.每个级别 ...
- 蓝桥杯练习系统习题-算法训练6
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练6 题目搜索方式:Ctrl+F--> 输入题目名称-> ...
- 蓝桥杯评分标准_蓝桥杯比赛要求
七.奖项设置及评选办法 7.1 省赛 1. 参赛选手奖 省赛每个组别设置一.二.三等奖,比例分别为 10% . 20% . 30% ,总比例为实际参赛人数 的 60% ,零分卷不得奖.省赛一等奖选手获 ...
- 2016第七届蓝桥杯省赛C/C++ B组试题解析整理
引言 今天是蓝桥杯省赛举办的日子,是一个很激动人心的时刻,也是我第一次参加蓝桥杯,从上午9点到下午1点,做题时间历经4个小时,想想就过瘾. 下面整理一下这次比赛的题目. *注:此处为了省事儿,全是用J ...
- 计算机能力挑战赛_蓝桥杯、PAT、CCF CSP、团体程序设计天梯赛、传智杯、计算机能力挑战赛、软考等大学生编程比赛/考试介绍...
介绍7个适合普通大学生参加的编程比赛/考试(注:有的比赛如蓝桥杯有多种赛别,本文仅介绍其中的程序设计/编程比赛). 编程入门书籍推荐<算法笔记>,内容详细易懂,对新手非常友好,描述语言为C ...
- 蓝桥杯比赛常考算法_蓝桥杯比赛要求
七.奖项设置及评选办法 7.1 省赛 1. 参赛选手奖 省赛每个组别设置一.二.三等奖,比例分别为 10% . 20% . 30% ,总比例为实际参赛 人数的 60% ,零分卷不得奖.省赛一等奖选手获 ...
- ZUST蓝桥杯校内选拔赛(java,c)安吉校区
序(暂存) 蓝桥杯分为校内模拟赛(10题)->省赛(6题)->国赛(6题)三场 按照难度分为A组(重点),B组(本科)和C组(专科) 按照类型分为软件组(C,Java,Python)和电子 ...
最新文章
- linux驱动开发要知道的那些知识(三)------container_of,定时器 及系统调用
- 就是你把所有代码全写在一个类里的?
- axure9中继器添加一列序号自增_中继器如何做简单穿梭框
- 云计算之路-道歉,无地自容的:4月7日14:15~18:35网站故障给大家带来麻烦了
- MySQL-8.0.x 新特性之索引页合并
- 写给游戏编程自学者的入门指南
- maven 关联源码插件_繁琐的任务简单化,Maven的插件机制
- python杨辉三角编程_Python基础练习实例49(打印杨辉三角)
- 你的 App 在 iOS 13 上被卡死了吗?
- 人脸对齐(十一)--PIFA2015
- 变长编码中前缀码的概念
- ABBYY PDF Transformer+ 给你好看
- 【图像分割】基于matlab随机游走算法图像分割【含Matlab源码 149期】
- 程序员代码面试指南——笔记1
- Ubuntu16.04 安装搭建RED5流媒体服务器
- Redis锁解决超卖问题
- contiki学习笔记(五)ctimer和etimer
- 什么是3D打印?3D打印技术?
- Eclipse配置svn(入门)
- 解决小程序Uncaught ReferenceError: __wxConfig is not define的问题