当前位置: 首页 > wzjs >正文

私人定制网站站长之家爱站网

私人定制网站,站长之家爱站网,wordpress添加面包屑导航,add_action wordpress题目:购物单 题目描述 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。 这不,XX大促销又来了!老板夫人开出了长长的购物单&a…

题目:购物单

题目描述

小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。

这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。
小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。
现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。

取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。
你的任务是计算出,小明最少需要取多少现金。


购物单

以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了:

标价(元)折扣
180.9088折
10.2565折
56.149折
104.659折
100.3088折
297.15半价
26.7565折
130.62半价
240.2858折
270.628折
115.8788折
247.3495折
73.219折
101.00半价
79.54半价
278.447折
199.26半价
12.979折
166.3078折
125.5058折
84.989折
113.3568折
166.57半价
42.569折
81.9095折
131.788折
255.8978折
109.179折
146.6968折
139.3365折
141.1678折
154.748折
59.428折
85.4468折
293.7088折
261.7965折
11.3088折
268.2758折
128.2988折
251.038折
208.3975折
128.8875折
62.069折
225.8775折
12.8975折
34.2875折
62.1658折
129.12半价
218.37半价
289.698折

说明
  1. 折扣规则

    • 例如“88折”表示按标价的 88% 计算;
    • “8折”表示按标价的 80% 计算;
    • 特别地,“半价”表示按标价的 50% 计算。
  2. 取款机限制

    • 取款机只能提供 100元面额的纸币
    • 小明希望尽可能少取些现金,但必须保证金额足够支付购物单上的所有商品。
  3. 输出要求

    • 提交的答案是一个整数,单位是元;
    • 答案的结尾必然是 00,例如 4300

解题思路

  1. 理解问题

    • 每个商品的实际支付金额 = 标价 × 折扣率;
    • 遍历购物单中的所有商品,累加每个商品的实际支付金额,得到总金额;
    • 将总金额向上取整到最近的 100 的倍数,以满足取款机的限制。
  2. 核心步骤

    • 计算实际支付金额
      • 遍历购物单中的每个商品,使用公式 标价 × 折扣率 计算每个商品的实际支付金额;
      • 将所有商品的实际支付金额累加起来,得到总金额。
    • 向上取整到 100 的倍数
      • 使用数学函数 ceil() 将总金额除以 100 后向上取整;
      • 再乘以 100,确保结果是 100 的倍数。
  3. 注意事项

    • 折扣率以小数形式表示,例如“88折”对应 0.88,“半价”对应 0.50
    • 最终结果必须是 100 的倍数,且不能小于总金额。

代码实现

以下是完整的 C++ 实现代码,并附有详细注释:

#include <iostream>  // 引入输入输出流库
#include <cmath>     // 引入数学库,用于向上取整函数 ceil()
using namespace std; // 使用标准命名空间,避免每次调用标准库函数时加 std::int main() {// 定义一个数组,存储每个商品的标价和折扣率// 每个商品用 pair<double, double> 表示,第一个值是标价,第二个值是折扣率const pair<double, double> items[] = {{180.90, 0.88}, {10.25, 0.65}, {56.14, 0.90}, {104.65, 0.90},{100.30, 0.88}, {297.15, 0.50}, {26.75, 0.65}, {130.62, 0.50},{240.28, 0.58}, {270.62, 0.80}, {115.87, 0.88}, {247.34, 0.95},{73.21, 0.90}, {101.00, 0.50}, {79.54, 0.50}, {278.44, 0.70},{199.26, 0.50}, {12.97, 0.90}, {166.30, 0.78}, {125.50, 0.58},{84.98, 0.90}, {113.35, 0.68}, {166.57, 0.50}, {42.56, 0.90},{81.90, 0.95}, {131.78, 0.80}, {255.89, 0.78}, {109.17, 0.90},{146.69, 0.68}, {139.33, 0.65}, {141.16, 0.78}, {154.74, 0.80},{59.42, 0.80}, {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.80},{208.39, 0.75}, {128.88, 0.75}, {62.06, 0.90}, {225.87, 0.75},{12.89, 0.75}, {34.28, 0.75}, {62.16, 0.58}, {129.12, 0.50},{218.37, 0.50}, {289.69, 0.80}};double total = 0; // 初始化总金额为 0// 遍历购物单中的每个商品for (const auto& item : items) {// 计算每个商品的实际支付金额:标价 × 折扣率total += item.first * item.second;}// 将总金额向上取整到最近的 100 的倍数// ceil(total / 100) 将总金额除以 100 后向上取整// 再乘以 100 得到最终结果cout << int(ceil(total / 100) * 100) << endl;return 0; // 程序正常结束
}

代码解释

  1. 数据结构

    • 使用 pair<double, double> 存储每个商品的标价和折扣率。
    • 第一个值(item.first)表示标价,第二个值(item.second)表示折扣率。
  2. 核心逻辑

    • 遍历购物单中的每个商品,计算其实际支付金额并累加到 total 中。
    • 使用 ceil() 函数将总金额向上取整到最近的 100 的倍数。
  3. 输出结果

    • 输出结果是一个整数,且必然是 100 的倍数。

运行结果

5200

简单版

#include <iostream>
#include <vector>using namespace std;int main()
{vector<double> prices = {180.90, 10.25, 56.14, 104.65, 100.30, 297.15, 26.75, 130.62, 240.28, 270.62, 115.87, 247.34, 73.21, 101.00, 79.54, 278.44, 199.26, 12.97, 166.30, 125.50, 84.98, 113.35, 166.57, 42.56, 81.90, 131.78, 255.89, 109.17, 146.69, 139.33, 141.16, 154.74, 59.42, 85.44, 293.70, 261.79, 11.30, 268.27, 128.29, 251.03, 208.39, 128.88, 62.06, 225.87, 12.89, 34.28, 62.16, 129.12, 218.37, 289.69};vector<double> discounts = {0.88, 0.65, 0.90, 0.90, 0.88, 0.50, 0.65, 0.50, 0.58, 0.80, 0.88, 0.95, 0.90, 0.50, 0.50, 0.70, 0.50, 0.90, 0.78, 0.58, 0.90, 0.68, 0.50, 0.90, 0.95, 0.80, 0.78, 0.90, 0.68, 0.65, 0.78, 0.80, 0.80, 0.68, 0.88, 0.65, 0.88, 0.58, 0.88, 0.80, 0.75, 0.75, 0.90, 0.75, 0.75, 0.75, 0.58, 0.50, 0.50, 0.80};double total = 0;for (int i = 0; i < prices.size(); ++i){total += prices[i] * discounts[i];}if(total - (int(total / 100) * 100 ) > 0){total = (int(total / 100) + 1) * 100;}cout << int(total) << endl;return 0;
}
http://www.dtcms.com/wzjs/447935.html

相关文章:

  • 电子商务网站开发公司seo技术蜘蛛屯
  • 企业做网站公司排名端口扫描站长工具
  • 深圳市城乡建设局网站百度浏览器在线打开
  • 哪些网站首页做的好app开发平台开发
  • dedecms网站地图插件怎么在百度上推广
  • 云盘网站如何做谷歌应用商店
  • 介绍自己做的电影网站推广软文200字
  • 景区旅游网站平台建设seo网站优化是什么
  • .net做网站的吗今日新闻头条新闻
  • 学做网站的视频福州百度推广优化排名
  • 西安做搭建网站泰安百度推广代理商
  • 设计手机网站seo短视频保密路线
  • 门户网站维护网络营销推广方案怎么写
  • 源代码网站怎么建设seo关键词优化推广价格
  • 网站流量狂刷器seo营销排名
  • 马鞍山网站建设cnfg枣庄网站seo
  • 高中网站制作网站宣传文案
  • 广州做网站哪间公司好企业seo如何优化
  • 做商铺的网站有那些新手小白怎么做跨境电商
  • 池州网站建设费用最近新闻事件
  • wordpress后台能修改模板文件武汉seo排名优化公司
  • 格子三合一交友婚恋网站模板广州的百度推广公司
  • 国务院关于网站建设免费注册网页网址
  • 北京企业网站排名优化seo案例视频教程
  • 夏津建设局网站搜索关键词排名
  • 做单平台网站制作微信上如何投放广告
  • 如何通过网站开发客户seo入门培训教程
  • 免费建立个人视频网站免费做网站怎么做网站链接
  • 专做网站营销技巧培训
  • 中国建设银行官方网站下载安装seo网站关键词优化报价