CCF-GESP计算机学会等级考试2025年9月一级C++T1 商店折扣
这是一道关于商店优惠方案选择的计算题。题目给出了两种优惠方案:1)满x元减y元(只能使用一次),2)直接打n折。计算购买p元商品时,选择哪种方案支付金额最少。程序需要比较两种优惠后的价格,取较小值输出。关键点在于正确计算两种方案的价格,特别注意打折计算时要用浮点数除法避免整数截断。示例1中满减后10-7=3元,打9折后10*0.9=9元,取较小值3.00元输出。
B4409 [GESP202509 一级] 商店折扣
题目描述
商店正在开展促销活动,给出了两种方案的折扣优惠。第一种方案是购物满 xxx 元减 yyy 元;第二种方案是直接打 nnn 折,也就是说价格变为原先的 n/10n/10n/10。这里的 x,y,nx, y, nx,y,n 均是正整数,并且 1≤y<x1 \leq y < x1≤y<x,1≤n<101 \leq n < 101≤n<10。
需要注意的是,第一种方案中满减优惠只能使用一次。例如购物满 101010 元减 333 元时,若挑选了价格总和为 333333 元的物品,只能减免 333 元,需要支付 303030 元。
小明在商店挑选了价格总和为 ppp 元的物品,结账时只能使用一种优惠方案。小明最少需要支付多少钱呢?
输入格式
四行,四个正整数 x,y,n,px, y, n, px,y,n,p,含义见题目描述。
输出格式
一行,一个小数,表示小明最少需要支付多少钱,保留两位小数。
输入输出样例 #1
输入 #1
8
7
9
10
输出 #1
3.00
输入输出样例 #2
输入 #2
8
7
2
11
输出 #2
2.20
说明/提示
对于所有测试点,保证 1≤y<x≤1001 \leq y < x \leq 1001≤y<x≤100,1≤n<101 \leq n < 101≤n<10,1≤p≤1001 \leq p \leq 1001≤p≤100。
解析
本题要注意整数除法要改成浮点数,详见代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
int x,y,n,p;
cin>>x>>y>>n>>p;
double mj;//满减后的实际付款金额
double dz;//打折后的实际付款金额
if(p>=x){//超过满减额度
mj=p-y;//满减
}else{//没超过
mj=p;//原价
}
dz=p/10.0*n;//计算打折后的金额,注意要改成浮点数除法
cout<<fixed<<setprecision(2)<<min(dz,mj);//输出最小值
return 0;
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)