题解
童程购物
1 条题解
-
0
解题思路
按客户身份(
V贵宾 /C普通)分两大情况,每种情况里再按购物额分档:- VIP:≤500 打 85 折;≤1000 打 8 折;>1000 打 75 折并送大礼包
- 普通:≤500 打 9 折;>500 仍打 9 折但送大礼包
用一个
bool变量记录是否送大礼包,用double保存折扣后的金额,最后保留两位小数输出。题目要求用格式化输入输出,所以用scanf/printf。参考代码
#include <cstdio> using namespace std; int main() { char c; double x; scanf("%c%lf", &c, &x); // 第一行身份,第二行购物额 double pay; bool gift = false; if (c == 'V') { // VIP客户 if (x <= 500) pay = x * 0.85; // 含500 打85折 else if (x <= 1000) pay = x * 0.8; // 500~1000 打8折 else { pay = x * 0.75; gift = true; } // 1000以上75折+大礼包 } else { // 普通客户 pay = x * 0.9; // 都是9折 if (x > 500) gift = true; // 500以上送大礼包 } if (gift) printf("YES\n"); else printf("NO\n"); printf("%.2lf\n", pay); // 保留两位小数 return 0; }复杂度分析
最多判断两次,时间复杂度 O(1),额外空间复杂度 O(1)。
- 1