最大比例

2023-10-27

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


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


程序应该输出:
5/2


再例如,输入:
3
549755813888 524288 2


程序应该输出:
4/1


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

CPU消耗  < 3000ms


假设比例为q,则我们对数据降序排序后不停的使用前一个除去后一个会得到一个商,也就是q的n次方,再求出所有得到的商的最大公约数,即q即可,但问题在于本题的商不一定是整数于是使用分数的做法,使用辗转相除

当然,我也不能确定我的是否正确,如有错误,希望指正

#include<stdio.h>  
#include<iostream>  
#include<algorithm>  
using namespace std;  
long long int cmp(long long int a,long long int b)  
{  
    return a>b;  
}  
int main()  
{  
    double s=9999999999;//最小的公约数  
    int mia,mib;//存最小的公约数分数形式  
    long long int a[1500];  
    int N;  
    cin>>N;  
    for(int i=0;i<N;i++)  
    {  
       scanf("%lld",&a[i]);  
    }  
    sort(a,a+N,cmp);  
    int x=1,y=1;  
    int t=0;  
    for(int i=0;i<N-1;i++)  
    {  
        if(a[i]==a[i+1])//去重  
           continue;  
        int n=a[i],m=a[i+1];  
        int c;  
        while(1)//先求i和i+1个数的商,用分数表示  
        {  
           c=n%m;  
           n=m;  
           m=c;  
           if(c==0)  
            break;  
       }  
       if(t==0)//表示这是第一个商  
       {  
           t=1;  
           x=a[i]/n,y=a[i+1]/n;  
           mia=x,mib=y;  
           s=1.0*x/y;  
       }  
       else  
       {  
           x=a[i]/n,y=a[i+1]/n;//分数形式的商  
           while(1)  
           {  
               if(s==1.0*x/y)//找到第i个商和前i-1个商的最大公约数  
                break;  
               else if(s>1.0*x/y)  
               {  
                    int h=x,g=y;  
                    x=mib*x,y=mia*y;  
                    n=x,m=y,c;  
                    while(1)  
                    {  
                        c=n%m;  
                        n=m;  
                        m=c;  
                        if(c==0)  
                            break;  
                    }  
                    x=x/n,y=y/n;  
                    if(x<y)  
                    c=x,x=y,y=c;  
                    s=1.0*h/g;//保证s存的是最小的那一个  
                    mia=h,mib=g;  
               }  
               else if(s<1.0*x/y)  
               {  
                   x=mib*x,y=mia*y;  
                    n=x,m=y,c;  
                    while(1)  
                    {  
                        c=n%m;  
                        n=m;  
                        m=c;  
                        if(c==0)  
                            break;  
                    }  
                    x=x/n,y=y/n;  
                    if(x<y)  
                    c=x,x=y,y=c;  
               }  
           }  
       }  
  
    }  
    printf("%d/%d",x,y);  
}  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最大比例 的相关文章

  • PAT——1035. 插入与归并

    根据维基百科的定义 插入排序是迭代算法 逐一获得输入数据 逐步产生有序的输出序列 每步迭代中 算法从输入序列中取出一元素 将之插入有序序列中正确的位置 如此迭代直到全部元素有序 归并排序进行如下迭代操作 首先将原始序列看成N个只包含1个元素
  • 读Qt示例之Modbus Master example(一)

    读Qt示例之Modbus Master example 一 本示例来自于Qt5 6 2 本篇主要看WriteRegisterModel这个模型类是怎么实现的 涉及知识点主要是model view中的model WriteRegisterMo
  • 金九银十:搞定这两个开源项目,30k轻松吧?

    又到了金九银十的招聘黄金季了 显然今年行情不怎么样 僧多粥少 而且招聘门槛也是越来越高 面试深度也越来越偏底层 动辄就是几道mid hard级别的算法题 做出来了说你Leetcode没少刷 没做出来就说你不行 就像我之前面试的时候 问我的我
  • SQL Server 关键字使用详解

    1 DISTINCT关键字 说明 用于返回唯一不同的值 语法 SELECT DISTINCT column name column name FROM table name 实例 选择用户的昵称并去重 选择用户的昵称并去重 SELECT D
  • 3.4 C++多态

    C 向上转型 1 派生类对象赋值给基类对象 2 派生类指针赋值给基类指针 单纯这样的使用 向上转型是不完整的 类型兼容原则 是指在需要基类对象的任何地方 都可以使用公有派生类的对象来替代 通过公有继承 派生类得到了基类中除构造函数 析构函数
  • VxWorks开发俱乐部

    VxWorks开发俱乐部
  • ORA-00322, ORA-00312 问题解决

    昨天发现无法登录Oracle数据库 通过sqlplus工具open数据库时报如下错误 alter database open ERROR at line 1 ORA 00322 log 2 of thread 1 is not curren
  • --no-defaults

    MySQL初始化脚本mysql install db使用简介及选项参数 2016 01 11 17 02 02 分类 MySQL mysql install db是一个默认放在 mysql scripts的一个初始化脚本 该脚本可以在任何装
  • CodeSmith 使用教程(4): 基本语法-CodeTemplate 指令

    前面的几篇介绍了使用CodeSmith模板自动生成代码和编写代码模板的基本知识 也说过CodeSmith最核心的部分是代码模板 从本篇开始介绍CodeSmith代码模板的基本语法 对于Asp Net程序员来说 可以说是碰到老朋友了 Code
  • AI练手系列(四)—— cnews中文文本分类(RNN实现)

    数据集介绍 这个数据集是由清华大学根据新浪新闻RSS订阅频道2005 2011年间的历史数据筛选过滤生成的 数据集包含50000个样本的训练集 5000个样本的验证集 10000个样本的测试集 词汇表5000个字 词 文本内容一共包含十个分
  • 在为函数传参时, 何时用引用,何时用指针呢?

    一般来说 能用引用尽量不用指针 引用更加直观 更少出现意外的疏忽导致的错误 指针可以有二重 三重之分 比引用更加灵活 有些情况下 例如使用 new 运算符 只能用指针 关于指针与引用的区别 可以看 CSDN 的 这篇文章 讲得很细致 在该文
  • Acwing-4699. 如此编码

    我们可以直接把c代入 然后将m的表达式展开 问题转化成已知m和a序列 求b序列 类似于进制位转化 把ai都看成10 m就是十进制数的表达式了 就更像了hh 这个过程很像求某进制下 各个数位上的数是多少 比如 1679各个位置上的数依次是9
  • GD32F303调试小记(十)之LVGL移植(FreeRTOS)

    一 前言 在上文中 我们成功的移植进了FreeRTOS 接下来我们在此基础上 移入我们的LVGL图形界面库 二 LVGL 一款用于绘制界面UI的开源库 让硬件资源更少的MCU跑出显示效果理想的界面 实际效果可以参考官方或者视频网站上开发者公
  • 【文末送书】2023年以就业为目的学习Java还有必要吗?

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 React从入门到精通 前端炫酷代码分享 从0到英雄 vue成神之路 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架
  • Window10安装TensorFlow(GPU)与可行性测试

    2017 11 9遇到坑了 安装成功但是import tensorflow出错正在排查原因 因为在VM的Ubuntu上貌似对GPU支持不怎么好 使用体验不佳 现在尝试直接在Windows10上使用anaconda和pip安装tensorfl
  • view, Window,Activity等概念的比较分析

    1 View 最基本的UI组件 表示屏幕上的一个矩形区域 2 Window 表示一个窗口 不一定有屏幕那么大 可以很大也可以很小 它包含一个View tree和窗口的layout 参数 View tree的root View可以通过getD
  • 数据结构 单链表1

    头文件
  • Kcov - gcov, lcov and bcov

    Short version Kcov a new project of mine for code coverage testing When developing software I ve often found measuring c
  • Vue实现验证码

    在Web应用程序中 为了避免机器自动化或恶意攻击 很常见的做法是要求用户在表单提交之前输入验证码 验证码最常见的形式是图片验证码 因为图片验证码最大程度地防止了自动化机器调用API来执行攻击 使人类用户输入不是人类难以识别的形式 比如文本和
  • 数据结构的常用八种排序算法

    概述 排序有内部排序和外部排序 内部排序是数据记录在内存中进行排序 而外部排序是因排序的数据很大 一次不能容纳全部的排序记录 在排序过程中需要访问外存 我们这里说说八大排序就是内部排序 当n较大 则应采用时间复杂度为O nlog2n 的排序

随机推荐

  • 活动安排问题-贪心算法

    在时间段内选择尽可能多的活动 0 14 include
  • python-10

    纯函数实现面向对象 人狗大战 游戏人狗大战 人 角色 属性 名称 等级 血量 攻击力 性别 职业 zhangsan name zhangsan level 1 hp 100 ad 20 sex 男 职业 魔法师 def person nam
  • QString和std::string相互转换

    QString和std string相互转换 使用下面的函数 toStdString gt 将QString转换成std string QString toStdString fromStdString gt 将std string转换成Q
  • Docker数据目录(/var/lib/docker)迁移

    本文介绍Linux上如何安全的迁移Docker的数据目录 var lib docker 为什么要迁移 虚拟机创建时 一般分配一个比较小的系统盘 然后挂载一个大容量的数据盘 docker默认情况下数据存储在系统盘 var lib docker
  • 捕获线程执行异常

    在 Thread 类中 可以获取线程运行时异常的 API 总共有四个 public void setUncaughtExceptionHandler UncaughtExceptionHandler eh 为某个特定线程指定 Uncaugh
  • hibernate注解

    现在EJB3实体Bean是纯粹的POJO 实际上表达了和Hibernate持久化实体对象同样的概念 他们的映射都通过JDK5 0注释来定义 EJB3规范中的XML描述语法至今还没有定下来 注释分为两个部分 分别是逻辑映射注释和物理映射注释
  • 目标检测一阶段和二阶段对比图

    图片来源
  • 『学Vue2+Vue3』认识Vue3

    认识Vue3 1 Vue2 选项式 API vs Vue3 组合式API 特点 代码量变少 分散式维护变成集中
  • Linux下安装jre

    Linux下安装Java运行环境 现需要项目部署到Linux中 需要配置java运行环境 注 以下测试环境系统为centOS 用户为超级管理员 jre8 1 下载最新版的jre 服务器环境下不需要配置jdk 下载地址如下 http www
  • microsoft visual c++ 6.0中文版两种使用方法

    microsoft visual c 6 0 是一款语言编程软件 那么很多人都不知道microsoft visual c 6 0中文版怎么使用 其实使用方法很简单哦 只要打开microsoft visual c 6 0中文版就可以进行语言编
  • 《数据结构》 图的创建与遍历 代码表示

    测试数据 10 15 共10个顶点 15条边 0 1 0 8 0 0 第一 二个数表示连接两个顶点的起始顶点 第三个数1表示单通行 0表示双向通行 4 8 1 5 4 0 5 9 1 0 6 0 7 3 1 8 3 1 2 5 0 2 1
  • c#排列组合算法

    Combinatorics cs代码清单 using System using System Collections using System Data
  • 二叉树所有节点转换成大于该节点的平均值,没有最大值就转换成0

    import java util ArrayList import java util List import java util function ToIntFunction import java util stream Collect
  • CUnit(单元测试框架)

    CUnit是一个用C语言编写 管理和运行单元测试的轻量级系统 它为C程序员提供了具有灵活多样用户界面的基本测试功能 CUnit是作为一个静态库构建的 它与用户的测试代码链接在一起 它使用一个简单的框架来构建测试结构 并为测试公共数据类型提供
  • Buildroot制作根文件系统过程(基于MYD-AM335X开发板)

    buildroot的功能很强大 可以利用它制作交叉编译工具链 根文件系统 甚至可以构建多种嵌入式平台的bootloader linux 下面以米尔科技的MYD AM335X平台为例展示如何利用buildroot制作自己所需的根文件系统 一
  • 柔性OLED拼接屏有哪些场景化应用?

    柔性OLED拼接屏是一种新型的显示技术 它采用了柔性OLED屏幕 可以实现多个屏幕的拼接 形成一个大屏幕显示 这种技术可以应用于各种场合 如商业展示 广告宣传 会议演示等 柔性OLED屏幕是一种新型的显示技术 它采用了柔性材料作为基底 可以
  • java基于ssm+vue的共享充电宝管理系统 elementui

    随着时代的发展 人们的生活越来越离不开手机 但是因为技术水平等原因的限制 手机的电池并没有人们想象中的那么耐用 很多时候人们在外出的时候 很可能会遇到手机没电的情况发生 作为日常通讯的必备工具 如果没电了 很可能会影响一些重要的事情 尤其是
  • 3D相机调研

    最近因为自己实验需要配置一个3D相机 安装在机械臂上实现eye in arm的自动化引导过程 调研结果记录如下 3D相机又称为深度相机 即通过该相机能检测出拍摄空间的景深距离 与普通相机 2D的最大区别 普通彩色相机 2D相机 拍摄到的图片
  • JS -- input输入框只能输入正整数

    摘自文章 input输入框只能输入正整数 半城烟沙的技术博客 51CTO博客 one
  • 最大比例

    X星球的某个大奖赛设了M级奖励 每个级别的奖金是一个正整数 并且 相邻的两个级别间的比例是个固定值 也就是说 所有级别的奖金数构成了一个等比数列 比如 16 24 36 54 其等比值为 3 2 现在 我们随机调查了一些获奖者的奖金数 请你