文章

【GESP】C++二级练习 luogu-b3669, [语言月赛202210] 购物节

GESP二级练习,数学函数、分支语句练习,难度★✮☆☆☆。

luogu-B3669 [语言月赛202210] 购物节

题目要求

题目描述

一个商店有两种包装的本子,第一种是单本装,一本 $x$ 元,第二种是十本优惠装,一套 $y$ 元。

现在商店推出“双十一”活动,每种包装的本子都优惠 1 元,优惠后价格为单本装 $x - 1$ 元,十本装为 $y - 1$ 元。

小明想要买恰好 $n$ 个本子,请问至少需要花多少钱?

注:这里的“恰好”的意义为,不能买少于 $n$ 个本子,也不能买超过 $n$ 个本子。

输入格式

共一行,包括三个数字 $x,y,n$,分别表示单本装的价格,十本优惠装的价格,小明需要的本子的数量。

输出格式

共一个数,表示小明购买 $n$ 个本子至少需要花费的钱的数目。

样例输入 #1

1
10 80 10

样例输出 #1

1
79

样例输入 #2

1
10 80 11

样例输出 #2

1
88

样例输入 #3

1
10 80 1

样例输出 #3

1
9

提示

样例解释

单本装原价 $10$ 元,十本装原价 $80$ 元。

优惠后价格为单本装 $9$ 元,十本装 $79$ 元。

此时,如果购买 $10$ 本,则需要 $79$ 元;如果购买 $1$ 本,则需要 $9$ 元;如果购买 $11$ 本,则需要 $88$ 元。

数据范围

对于 $20\%$ 的数据,满足 $n < 10$;

对于 另外 $20\%$ 的数据,满足 $n$ 是 $10$ 的倍数;

对于 $80\%$ 的数据,满足 $0\le n,x,y\le 10^4$

对于 $100\%$ 的数据,满足 $0\le n,x,y\le 10^9$


题目分析

解题思路

  1. 首先,读取输入的单本装原价 x、十本装原价 y 和购买数量 n
  2. 初始化变量 result_only_1 来存储购买 n 本书的总价格,如果每本书都以单本装价格购买。
  3. 计算购买 n 本书的总价格,如果每本书都以单本装价格购买,并存储在 result_only_1 中。
  4. 计算可以整除 10 的本数 count,以便计算可以以十本装价格购买的书籍数量。
  5. 计算不能整除 10 的本数 count_2,以便计算需要以单本装价格购买的书籍数量。
  6. 计算以十本装价格购买 count 本书的总价格,并存储在 result_1 中。
  7. 计算以单本装价格购买 count_2 本书的总价格,并存储在 result_2 中。
  8. 计算总的最小价格 result,即以十本装价格购买 count 本书和以单本装价格购买 count_2 本书的总价格之和。
  9. 输出最小价格 result

注意:由于最终价格可能超出int类型数据范围,因此需要用long long


示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cmath>
#include <iostream>

using namespace std;
int main() {
    int x, y; // 定义变量x和y
    int n; // 定义变量n
    cin >> x >> y >> n; // 读取输入的x, y, n
    long long result_only_1 = 0; // 初始化result_only_1为0
    result_only_1 = (x - 1) * (long long)n; // 计算result_only_1的值
    int count = n / 10; // 计算n除以10的整数部分
    int count_2 = n % 10; // 计算n除以10的余数
    long long result_1, result_2 = 0; // 定义变量result_1和result_2
    result_1 = (y - 1) * (long long)count; // 计算result_1的值
    result_2 = (x - 1) * (long long)count_2; // 计算result_2的值
    long long result = result_1 + result_2; // 计算result的值
    result = min(result_only_1, result); // 计算result的最小值
    cout << result; // 输出result的值

    return 0;
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页

luogu-”系列题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

本文由作者按照 CC BY 4.0 进行授权