第八届蓝桥杯【省赛试题1】购物单

本文介绍了一个简单的购物清单结算问题,通过遍历商品清单并计算每件商品的实际支付价格来确定总金额,最后根据总金额确定从取款机上需要提取的最小现金数额。

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

题目描述:

小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。
这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。
小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。
现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。
取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。
你的任务是计算出,小明最少需要取多少现金。
以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。
-----------------
****     180.90       88折
****      10.25       65折
****      56.14        9折
****     104.65        9折
****     100.30       88折
****     297.15        半价
****      26.75       65折
****     130.62        半价
****     240.28       58折
****     270.62        8折
****     115.87       88折
****     247.34       95折
****      73.21        9折
****     101.00        半价
****      79.54        半价
****     278.44        7折
****     199.26        半价
****      12.97        9折
****     166.30       78折
****     125.50       58折
****      84.98        9折
****     113.35       68折
****     166.57        半价
****      42.56        9折
****      81.90       95折
****     131.78        8折
****     255.89       78折
****     109.17        9折
****     146.69       68折
****     139.33       65折
****     141.16       78折
****     154.74        8折
****      59.42        8折
****      85.44       68折
****     293.70       88折
****     261.79       65折
****      11.30       88折
****     268.27       58折
****     128.29       88折
****     251.03        8折
****     208.39       75折
****     128.88       75折
****      62.06        9折
****     225.87       75折
****      12.89       75折
****      34.28       75折
****      62.16       58折
****     129.12        半价
****     218.37        半价
****     289.69        8折
--------------------

需要说明的是,88折指的是按标价的88%计算,而8折是按80%计算,余者类推。
特别地,半价是按50%计算。
请提交小明要从取款机上提取的金额,单位是元。
答案是一个整数,类似4300的样子,结尾必然是00,不要填写任何多余的内容。

特别提醒:不许携带计算器入场,也不能打开手机。

题目答案:

5200

题目思路:

各项相乘求和即可。


#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <set>
using namespace std;

int main()
{
    double sum=0,a,b;
    string s;
    while(cin>>s>>a>>b)
       {
            sum+=a*b;
            if(a==0)
                break;
       }
    cout<<sum<<endl;
    return 0;
}
/*
****     180.90       0.88
****      10.25       0.65
****      56.14        0.9
****     104.65        0.9
****     100.30       0.88
****     297.15       0.5
****      26.75       0.65
****     130.62       0.5
****     240.28       0.58
****     270.62        0.8
****     115.87       0.88
****     247.34       0.95
****      73.21        0.9
****     101.00       0.5
****      79.54       0.5
****     278.44        0.7
****     199.26       0.5
****      12.97        0.9
****     166.30       0.78
****     125.50       0.58
****      84.98        0.9
****     113.35       0.68
****     166.57       0.5
****      42.56        0.9
****      81.90       0.95
****     131.78        0.8
****     255.89       0.78
****     109.17        0.9
****     146.69       0.68
****     139.33       0.65
****     141.16       0.78
****     154.74        0.8
****      59.42        0.8
****      85.44       0.68
****     293.70       0.88
****     261.79       0.65
****      11.30       0.88
****     268.27       0.58
****     128.29       0.88
****     251.03        0.8
****     208.39       0.75
****     128.88       0.75
****      62.06       0.9
****     225.87       0.75
****      12.89      0.75
****      34.28       0.75
****      62.16       0.58
****     129.12       0.5
****     218.37       0.5
****     289.69      0.8
*/

### 关于2023年蓝桥杯C++ C组的信息 目前可获取到的关于2023年第十四届蓝桥杯的具体题目和解题报告主要集中在A组和B组,而针对C组的内容较少公开发布。以下是基于现有资料整理的部分信息以及可能涉及的知识点。 #### 已知信息概述 根据已有的参考资料[^1]、[^2],可以确认的是2023年的蓝桥杯确实存在多个分组(如A组、B组),并提供了部分真题及其解析。然而对于C组的具体题目尚未有完整的官方文档或广泛传播的学习资源可供查阅。因此以下内容更多是从其他相近组别的考察方向推测而来: - **基础算法**:包括但不限于排序、查找等基本操作的应用场景扩展。 - **数据结构入门级应用**:链表的操作、栈队列的基础运用等问题形式较为常见。 - **简单数学模型构建能力测试**:例如最大公约数最小公倍数计算、素数判断等相关知识点会被频繁提及。 #### 可能覆盖的主要技术领域 ##### 平方差问题探讨 此类问题是通过给定两个整数a,b来求取它们之间所有完全平方数值总和减去非完全平方数值之差的结果展示。此过程涉及到循环遍历区间内的每一个数字判定其是否属于完美平方数范畴进而累加或者扣除相应值完成最终运算得到答案。 ```python import math def square_difference(a, b): sum_squares = 0 other_sum = 0 start = min(a, b) end = max(a, b) for num in range(start, end + 1): root = int(math.sqrt(num)) if root * root == num: sum_squares += num else: other_sum += num return abs(sum_squares - other_sum) result = square_difference(3,7) print(result) # 输出结果应为具体数值表示两者差异程度大小关系 ``` ##### 更小的数统计方法研究 该类题目通常要求参者能够快速有效地找出数组中满足特定条件的小于某个阈值k的所有元素数量。这不仅考验选手们对线性扫描技巧掌握情况同时也对其优化思维提出了挑战。 ```c++ #include <bits/stdc++.h> using namespace std; int count_smaller(vector<int>& nums,int k){ int cnt=0; for(auto &num :nums ){ if (num<k) ++cnt; } return cnt; } // 测试函数调用逻辑实现细节略... ``` ##### 动态规划初步接触——以买瓜为例说明状态转移方程设计原则 动态规划作为解决多阶段决策过程中最优策略选取的有效工具,在竞编程里占据重要地位。下面将以“买瓜”这一经典案例阐述如何定义子问题建立递推关系从而达到全局最优点的目的[^3]。 假设每种类型的西瓜都有固定价格p_i及重量w_i,现在顾客手里持有金额m元想要购买尽可能重的一批商品回家享用,则可以通过如下方式设定dp[j]代表当剩余钱数恰好等于j时所能携带的最大货物质量是多少? 初始状态下令所有的dp[]均为负无穷大(-INF),唯有dp[0]=0因为没有任何花费情况下显然无法带走任何东西;接着按照顺序逐一考虑各个品种加入购物清单后的变化影响直至处理完毕全部选项为止最后返回dp[m]即为我们所寻找的目标解答之一。 ```java public class MelonBuying { public static final int INF = Integer.MIN_VALUE / 2 ; public static int getMaxWeight(int m , List<Pair<Integer,Integer>> melons){ int n = melons.size(); // 初始化 dp 数组长度设为 m+1 方便索引访问 int [] dp=new int [m+1]; Arrays.fill(dp,INF); dp[0]=0; for(Pair<Integer,Integer> pair:melons){ int pi=pair.getKey(),wi=pair.getValue(); for(int j=m;j>=pi;--j){ dp[j]=Math.max(dp[j],dp[j-pi]+wi); } } // 找到最后一个有效位置对应的值就是答案 for(int i=m;i>=0;--i){ if(dp[i]!=INF)return i; } return 0;//理论上不会执行到这里除非输入异常 } } ``` #### 结论 由于缺乏直接面向C组的确切描述材料,上述分析仅能依据相似难度层次下的命题规律做出合理猜测。建议关注后续事主办方发布的正式版指南文件以便及时了解最新动向调整复习计划安排。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值