【Python】 网易笔试编程题(买苹果)

针对一个具体的编程问题——如何计算购买特定数量苹果所需的最少袋数,给出了解题思路与Python实现代码。问题背景设定为购买苹果,但商贩只提供6个装与8个装的固定组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

如下是网易17年秋招编程题里的题目


小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。 

输入描述:
输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果


输出描述:
输出一个整数表示最少需要购买的袋数,如果不能买恰好n个苹果则输出-1

输入例子:
20

输出例子:
3

思路及Python实现

读完题目,想必很容易知道,要想袋子数越少,肯定是每袋能装8个的越多越好,只要抓住这点后面的实现就比较容易了。首先有一个方程是要基础的:8*i + 6*j = n(其中i为大袋数,j为小袋数,n为苹果数)。

先假设袋子数最少为:

min = n/8
然后逐次减少,判断剩下的苹果数是否能用小袋(装6个)恰好装完:
for i in range(min,-1,-1):
    if (n-8*i) % 6 == 0:
        succ += 1
        j = (n-8*i)/6
        break
最后,判断一下,如能恰好装完,就输出i + j;否则输出-1。
if succ > 0:result = i + j
else:result = -1
return  result

OK,最后照例附上Python实现
#encoding:utf-8

def func(n):
    min = n/8
    succ = 0
    for i in range(min,-1,-1):
        if (n-8*i) % 6 == 0:
            succ += 1
            j = (n-8*i)/6
            break
    if succ > 0:result = i + j
    else:result = -1
    return  result

n = input()
print func(n)


更多样例

更多样例请看这里哟:http://blog.youkuaiyun.com/buracag_mc/article/category/6817874






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值