试题 算法提高 最大乘积(python)

n个数中取k个使得乘积最大(c++实现) 题目:给定N个整数A1, A2, ... AN。请你从中选出K个数,使其乘积最大。  请你求出最大的乘积,由于乘积可能超出整型范围,你只需输出乘积除以1000000009的余数。  注意,如果X<0, 我们定义X除以1000000009的余数是负(-X)除以1000000009的余数。即:0-((0-x) % 1000000009)【输入格式】第一行包含两个整数N和K。  以下N行每行一个整... 阅读详情

思路:先对数组排好序,然后利用双指针进行处理,假如两个负数的乘积大于等于两个正数的乘积,那么取负数的乘积,因为后面可能还要用到正数的值;否则就取数值最大的数。详见代码。

题目:

资源限制
时间限制:1.0s   内存限制:512.0MB
问题描述
  对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢?
输入格式
  第一行一个数表示数据组数
  每组输入数据共2行:
  第1行给出总共的数字的个数n和要取的数的个数m,1<=n<=m<=15,
  第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4。
输出格式
  每组数据输出1行,为最大的乘积。
样例输入
1
5 5
1 2 3 4 2
样例输出
48 

代码:

def fun(m,nums):
    nums.sort()  # 从小到大排序 有负数的话,负数在左边
    # 在m=1的情况下,直接返回最大值即可
    if m == 1:
        return nums[-1]
    s = 1
    start = 0 
    end = len(nums) - 1  
    while start < len(nums)-2 and end > 0 and m > 0:
        # 两个负数的乘积大于等于两个正数的乘积
        if nums[start] * nums[start+1] >= nums[end] * nums[end-1] and m >= 2:
            s *= nums[start] * nums[start+1]
            start += 2
            m -= 2
        # 否则取数值最大的数
        else:
            s *= nums[end]
            end -= 1
            m -= 1
    return s

if __name__ == "__main__":
    n = int(input()) # 数组的个数
    total = []
    while n > 0:
        a = list(map(int,input().split()))
        b = list(map(int,input().split()))
        total.append(fun(a[1],b))
        n -= 1
    for i in total:
        print(i)

在这里插入图片描述

字节教育2024校招教育算法面试题详解 第一部分:算法面试准备 1. 引言 1.1 教育算法面试的重要性 在科技日新月异的今天,教育算法作为人工智能的一个重要分支,正日益受到各行业的重视。字节教育2024校招教育算法面试题详解,旨在帮助准备参加校招的学子们掌握教育算法的核心知识,顺利通过面试关。 阅读详情

相关推荐

算法设计实验-最大k乘积问题

算法设计实验-最大k乘积问题 亲自用Dev-C++测试实验结果,没有任何问题!

算法提高 最大乘积

问题描述   对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢? 输入格式   第一行一个数表示数据组数   每组输入数据共2行:   第1行给出总共的数字的个数n和要取的数的个数m,1   第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4。 输出格式   每组数据输出1行,为最大的乘积。 样例输入 1 5 5

cyh 822

Globus数据下载全攻略:从零配置到批量下载大文件(附常见问题解决)

本文详细介绍了Globus数据下载的全流程,从零配置到批量下载大文件的实用技巧,包括环境准备、高级传输策略、性能优化及常见问题解决方案。Globus作为科研数据的高效传输工具,通过并行流传输和自动校验技术,显著提升大规模数据传输的效率和可靠性。

u9v0w的博客 663

1464 数组中两元素的最大乘积(排序)

1. 问题描述: 给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。 请你计算并返回该式的最大值。 示例 1: 输入:nums = [3,4,5,2] 输出:12 解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)*(nums[2]-1) = (4-1)*(5-1) = 3*4 = 12 。 示例 2: 输入:nums = [1,5,4,5] 输出:16 解释:选..

二哈 454

立创EDA手动拼板实战:当自带功能不够用,如何用‘复制粘贴’搞定异形拼版与特殊布局

本文详细介绍了立创EDA手动拼板技术在异形拼版与特殊布局中的应用实战。通过CTRL+SHIFT+V等核心操作技巧,解决混合尺寸拼板、特殊间距需求等复杂场景,提升PCB设计效率与灵活性,特别适合需要高精度控制的射频电路和医疗设备项目。

weixin_31967485的博客 389

BIM模型导入SuperMap

目录 一、超图 BIM插件安装 1.1 插件下载 1.2 安装 二、BIM模型导出 2.1 Revit插件导出 2.2 SuperMap导入工具 三、SuperMap BIM数据处理与服务发布 四、SuperMap三维数据处理中关于模型高程修改方法 一、超图 BIM插件安装 1.1 插件下载 下载链接:http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?tt=ProductAAS&id=134 1..

爱晒太阳的风 3599

试题 算法提高 最大乘积

问题描述   对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢? 输入格式   第一行一个数表示数据组数   每组输入数据共2行:   第1行给出总共的数字的个数n和要取的数的个数m,1<=n<=m<=15,   第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4。 输出格式   每组数据输出1行,为最大的乘积。 样例输入 1 5 5 1 2 3...

wnamej的博客 513

用Python手把手教你实现一个多层感知机(MLP)——从理论到代码实战

本文详细介绍了如何使用Python和Theano库从零开始实现多层感知机(MLP),涵盖从核心原理到代码实战的全过程。通过构建隐藏层、输出层和完整MLP模型,结合权重初始化、激活函数选择和训练技巧,帮助开发者深入理解神经网络工作机制,并应用于实际机器学习任务。

web39explorer的博客 971

试题 算法提高 最小乘积(提高型)

试题 算法提高 最小乘积(提高型) 问题描述   给两组数,各n个。   请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。要求程序输出这个最小值。   例如两组数分别为:1 3  -5和-2 4 1 那么对应乘积取和的最小值应为:   (-5) * 4 + 3 * (-2) + 1 * 1 = -25 输入格式   第一个行一个数T表示数据组数。后面每组数据,先读入一个n,接下来两行每行n个数,每个数的绝对值小于等于1000。   n<=1000,T<=10 输出格

weixin_46640345的博客 225

基于四旋翼模型的火箭型无人机视线角保持控制仿真设计

本文针对火箭型无人机的视线角保持控制问题展开研究。基于四旋翼动力学模型,通过改造设计了一种摄像头朝上安装的特殊无人机系统,用于追踪空中目标。文章详细推导了坐标系定义、运动学和动力学方程,重点分析了摄像头安装与视线几何关系,建立了目标运动模型和视线向量计算方法。通过解算期望姿态角,实现了使机体Z轴始终对准目标的控制目标。仿真结果表明,该系统能有效完成视线角保持任务,为空对空监视等应用场景提供了可行方案。~~~~~

huanghm88的专栏 143

【C语言趣味教程】(0) 专栏介绍

这是一套C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅!本专栏保证篇篇精品,继续保持本人一贯的幽默式写作风格,当然,在有趣的同时也同样会保证文章的质量,旨在能够产出"有趣的干货" !本系列教程不管是零基础还是有基础的读者都可以阅读,可以先看看目录!标题前带星号 (*) 的部分不建议初学者阅读,因为内容难免会超出当前章节的知识点,面向的是对 C 语言有一定基础或已经学过

有道无术, 术尚可求。有术无道, 止于术。 2万+

青训营-豆包MarsCode技术训练营试题解析四

‌豆包青训营‌是由字节跳动和稀土掘金社区共同发起的技术培训和人才选拔项目,主要面向在校大学生。该项目的目标是培养具有职业竞争力的优秀开发工程师,并提供全程免费的课程,不收取任何费用‌。

HappyAcmen 1518

组态王的日历时间控件脚本

日期时间控件中的脚本中在小于10的月份和天数前必须要加上0,这是由首字符对比机制规定的,首字母相同,就不再不做对比了,比如1和11,是一样的。首字母不同,再比较下一位。 float Ayear1; float Amonth1; float Aday1; string temp1; Ayear1=sd.Year; Amonth1=sd.Month; Aday1=sd.Day; temp1=StrFromInt( Ayear1, 10 ); if(Amonth1<10) temp1=temp1+"-0"+

逍遥子的博客 5718

蓝桥杯试题 算法提高 P1001

蓝桥杯试题 算法提高 P1001 题目描述: 资源限制 时间限制:1.0s 内存限制:256.0MB      当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过8位,然后把它们相乘的结果存储在另一个字符串当中(长度不会超过16位),最后把这个字符串打印出来。例如,假设...

qiaomm的个人博客 870

【音视频基础】一篇搞懂视频的各种封装格式

在现代多媒体处理中,视频封装格式扮演着至关重要的角色。不同的封装格式决定了视频文件的存储方式、兼容性以及功能特性。无论是观看高清视频、编辑电影剪辑,还是在互联网上流式传输内容,理解各种视频封装格式的基础知识都是必不可少的。在这篇文章中,我们将详细介绍常见的视频封装格式,探讨为什么需要这些格式,以及它们各自的功能和区别,帮助你在选择和使用视频格式时做出更明智的决定。WEBM理解各种视频封装格式的功能和区别对于选择合适的格式至关重要。

m0_62599305的博客 2483

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

算法提高 Torry的困惑(提高型)

Description Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。 Input 输入描述...

IoT_fast的博客 298

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

蓝桥杯算法提高vip试题P0404

** 首先我们先看下今天这道题 计算一个无符号整数的阿尔法乘积。对于一个无符号整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身;否则的话,x的阿尔法乘积就等于它的各位非0的数字相乘所得到的那个整数的阿尔法乘积。例如,4018224312的阿尔法乘积等于8,它是经过以下的几个步骤计算出来的:   4018224312à418224312à3072   307...

qq_44471484的博客 308

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

试题 算法训练 开心的金明

试题 算法训练 开心的金明 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎 么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一 个重要度,分为5等:用整数1~5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N

weixin_46640345的博客 283

题目 1485: [蓝桥杯][算法提高VIP]Torry的困惑(提高型)

题目描述 Torry从小喜爱数学。一天,老师告诉他, 像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉 老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这 个数模上50000的值。 输入 仅包含一个正整数n,其中n< =100000。 输出 输出一行,即前n个质数的乘积模50000的值。 样例输入 1 样例输出

程序员贺加贝的博客 307

试题 算法提高 分解质因数

2020蓝桥杯习题汇总 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   给定一个正整数n,尝试对其分解质因数 输入格式   仅一行,一个正整数,表示待分解的质因数 输出格式   仅一行,从小到大依次输出其质因数,相邻的数用空格隔开 样例输入 100 样例输出 2 2 5 5 数据规模和约定   n<=2147483647 分析: 这道题是不难的,问题在于怎样避免超时,所以我们应该尽量优化我们的代码 如果输入的数已经是质数了,那么可以直接输出,节省运行时间。 如果不是质数,

小黄的博客 718

python竞赛试题及答案_【技术分享】用python解NOIP竞赛题

以下为2017年全国 NOIP 提高组复赛的第1题:怎么样,读完题是不是感觉特别懵。—— 我是谁,我在哪里?接下来我们来慢慢解析这道让人摸不着头脑的竞赛题。一、首先翻译一下题的意思:l假设,现在人民币只有两个币种,面值你定l对面值数字的要求是这两个数字不能有公约数(除1这个公约数外)例如:2和5l问用这两个面值的钱,不能凑齐的最大的价钱是多少l当然,前提是你有任意多的钱是不是稍微要清晰一些了呢。二...

weixin_39719472的博客 1425

腾讯笔试题(其一)

腾讯笔试题先行题1:找到乘积最大的连续子数组并返回积思想:动态规划代码:先行题2:找到和最大的路径并返回和思想:动态规划代码:找到乘积最大的路径并返回积(有负数)思想:同样动态规划 + 保留最小最大值代码: 先行题1:找到乘积最大的连续子数组并返回积 思想:动态规划 由于有负数,因此最小值和最大值都要求保留 代码: class Solution: def maxProduct(self, nums: List[int]) -> int: if not nums:

Cynthia99999的博客 276

蓝桥杯练习系统习题-算法提高2

蓝桥杯练习系统习题-算法提高2 题目搜索方式:Ctrl+F—-> 输入题目名称—>定位到解答. Torry的困惑(提高型) #include #include int is_prime(int x) { int i,s = sqrt(x); for(i = 2; i if(x % i == 0) {

好好学java 3111

试题 算法提高 概率计算

试题 算法提高 概率计算 问题描述   生成n个∈[a,b]的随机整数,输出它们的和为x的概率。 输入格式   一行输入四个整数依次为n,a,b,x,用空格分隔。 输出格式   输出一行包含一个小数位和为x的概率,小数点后保留四位小数 样例输入 2 1 3 4 样例输出 0.3333 思路: 此题是一种概率题,题目意思就是随机出n个整数范围是a-b然后让我们求n个整数和为x的概率为多少? 我们这时知道a到b的数出现的概率,概率为:1/(a-b+1)这就是他们每个数出现的概率。 那要求n个随机出来的数的x的

weixin_46640345的博客 267

python竞赛试题及答案_用python解NOIP竞赛题

以下为2017年全国 NOIP 提高组复赛的第1题:怎么样,读完题是不是感觉特别懵。—— 我是谁,我在哪里?接下来我们来慢慢解析这道让人摸不着头脑的竞赛题。一、首先翻译一下题的意思:l 假设,现在人民币只有两个币种,面值你定l 对面值数字的要求是这两个数字不能有公约数(除1这个公约数外)例如:2和5l 问用这两个面值的钱,不能凑齐的最大的价钱是多少l 当然,前提是你有任意多的钱是不是稍微要清晰一些...

weixin_39946964的博客 984
上一篇: 试题 算法提高 字符串压缩
下一篇: 数据结构与算法——栈(python详细版附带例子)
xiao黄
xiao黄 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄8年 1万+粉丝 250原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值