首页 > 试题广场 >

支付宝消费打折

[编程题]支付宝消费打折
  • 热度指数:5547 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
众所周知,在一些消费支付的场合中,往往有“支付宝九五折”的优惠。
这天小苯来到了超市购买物品,一共有 n 种物品,每种物品只能购买一个,但有的物品支持优惠活动,有的并不支持。恰好本超市的结账是有“支付宝九五折”优惠的,小苯的支付宝余额还剩 k 元,他想知道他仅使用支付宝进行支付的话,最多能买几件物品?

输入描述:
输入包含三行。
第一行两个正整数 n, k\ (1 \leq n \leq 10^5), \ (1 \leq k \leq 10^9)
第二行包含 n 个正整数 a_i (1 \leq a_i \leq 10^4) 表示每个物品的价格。
第三行一个长度为 n 的只含有 01 的字符串,表示每个物品是否支持优惠。(如果是 1 代表第 i 个物品支持优惠,否则不支持。)


输出描述:
输出一行一个整数表示答案。
示例1

输入

5 9
3 4 2 3 1
11101

输出

4

说明

选择买第 1,3,4,5 个物品。
import sys

n,k = map(int,input().split())
prince = list(map(int,input().split()))

flag2 = input()
flag = []
for i in flag2:
    flag.append(int(i))
prince2 = []
for i,j in enumerate(prince):
    val = j*0.95 if flag[i] else j
    prince2.append(val)
prince2.sort()
ans = 0
for i in prince2:
    k-=i
    if k>=0:
        ans+=1
    else:
        break
print(ans)


发表于 2025-07-29 11:12:59 回复(0)