当前位置: 首页 > news >正文

蓝桥杯 19. 最大比例

最大比例

原题目链接

题目描述

X 星球的某个大奖赛设了 M 级奖励。每个级别的奖金是一个正整数。

并且,相邻两个级别间的比例是一个固定值,也就是说:所有级别的奖金构成一个等比数列

例如:
奖金数列为 16, 24, 36, 54,其等比值为 3/23/23/2

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


输入描述

  • 第一行:一个整数 N0 < N < 100),表示接下来有 N 个正整数;
  • 第二行:N 个正整数 X₁, X₂, ..., XₙXᵢ < 10⁹),用空格隔开,表示调查到的某些获奖者的奖金数额。

输出描述

  • 输出一个形如 A/B 的最简分数,表示可能的最大比例系数,其中 AB 是互质正整数。

输入样例

3
1250 200 32

输出样例

25/4

c++代码

#include<bits/stdc++.h>using namespace std;typedef long long ll;ll greatest_common_divisor(ll a, ll b) {if (a < b) return greatest_common_divisor(b, a);if (b == 0) return a;else return greatest_common_divisor(b, a % b);
}int main() {ll n, a, maxi, maxj;cin >> n;vector<double> arr;double min_val = DBL_MAX;unordered_set<ll> st;for (ll i = 0; i < n; i++) {cin >> a;if (st.find(a) == st.end()) {st.insert(a);arr.push_back(a);}}sort(arr.begin(), arr.end());for (ll i = 1; i < arr.size(); i++) {if (arr[i] / arr[i - 1] < min_val) {maxi = (ll)arr[i - 1];maxj = (ll)arr[i];min_val = arr[i] / arr[i - 1];}}ll k = greatest_common_divisor(maxi, maxj);cout << maxj / k<< "/" << maxi / k;return 0;
}//by wqs

思路解析

贪心做法是,排序+去重后,选择相邻两个数比值最小的。

相关文章:

  • 阳光乳业2024年营收、利润双降:囿于一隅,市场单一化困局何解?
  • 抱佛脚之学SSM五
  • Rust 学习笔记:安装 Rust
  • Qt实现语言切换的完整方案
  • 一,开发环境安装
  • Java 实现单链表翻转(附详细注释)
  • redis 使用 Docker 部署 简单的Redis 集群(包括哨兵机制)
  • Qt基础007(Tcp网络编程)
  • 32单片机——GPIO的工作模式
  • Redis的string类型使用
  • Redis核心技术知识点全集
  • 第五章:5.3 ESP32物联网应用:阿里云IoT平台与腾讯云IoT平台的数据上传与远程控制
  • KafkaSpark
  • 初始SpringBoot
  • Java | 深拷贝与浅拷贝工具类解析和自定义实现
  • 数据预处理:前缀和算法详解
  • Vue3 + TypeScript 实现二维码生成与展示
  • poi生成横向文档以及复杂表头
  • 驱动开发硬核特训 · Day 18:深入理解字符设备驱动与子系统的协作机制(以 i.MX8MP 为例)
  • 欧拉计划 Project Euler54(扑克手牌)题解
  • 商务部新闻发言人:截至目前,中美之间未进行任何经贸谈判
  • 温氏股份一季度归母净利润20.01亿元,同比扭亏为盈
  • 宫崎骏电影《幽灵公主》4K修复版定档五一
  • “听公交时听一听”,上海宝山街头遍布“有声图书馆”
  • “仅退款”将成过去时!多个电商平台集体修改售后规则,商家获得更多自主权
  • 国际货币基金组织:将今年美国经济增长预期下调0.9个百分点至1.8%