文章

【GESP】C++二级练习 luogu-B3658, 口算练习

GESP二级练习,数据类型转换、数学函数练习,难度★✮☆☆☆。

luogu-B3658 [语言月赛202209] 口算练习

题目要求

题目描述

在课堂上,同学们经常需要进行口算练习。

老师出了一道练习题:计算 $\bigg\lfloor \dfrac{x}{y} \bigg\rfloor$ 的值,请你问答这个问题。

其中 $\lfloor a \rfloor$ 代表不超过 $a$ 的最大整数,如 $\lfloor 1.1 \rfloor = 1, \lfloor 4 \rfloor = 4, \lfloor -2.2 \rfloor = -3$。

提示:

在 C++ 中,int 类型变量 x, y,语句 x/y 计算得到的是 $\dfrac{x}{y}$ 向零取整的值。例如:

1
2
int x = -3, y = 2;
cout << x / y;

上面的代码会输出 -1。

floor 函数,其功能是“向下取整”,比如:floor(-1.5) = -2.0

输入格式

输入共一行两个整数 $x,y$,保证 $y \neq 0$。

输出格式

输出一行一个整数,代表 $\bigg\lfloor \dfrac{x}{y} \bigg\rfloor$。

样例输入 #1

1
2 1

样例输出 #1

1
2

样例输入 #2

1
-3 2

样例输出 #2

1
-2

数据范围

对于 $20\%$ 的数据,$y = 1$;
对于另外 $20\%$ 的数据,保证 $x = ky,k \in \Z$;
对于另外 $20\%$ 的数据,保证 $x \times y >0 $;
对于 $100\%$ 的数据,$-10^3 \le x, y \le 10^3, y \neq 0$。


题目分析

方法一

  1. 读取两个整数
  2. 使用floor函数计算两个整数的商
  3. 输出结果

方法二

  1. 读取两个整数
  2. 判断浮点数的正负
  3. 如果是正数,直接取整
  4. 如果是负数,判断是否能整除
  5. 如果能整除,直接取整
  6. 如果不能整除,取绝对值,加1,再取负
  7. 输出结果

示例代码

方法一:利用floor函数(不在二级考纲范围内)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cmath>
#include <iostream>
using namespace std;
int main() {
    // 读取两个整数
    int x, y;
    cin >> x >> y;
    // 将x除以y,得到一个浮点数
    double temp_float = (double) x / y;
    // 将浮点数向下取整,输出结果
    cout << floor(temp_float) ;
    // 返回0,表示程序正常结束
    return 0;
}

方法二,利用abs函数计算,符合二级考纲范围

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <cmath>
#include <iostream>
using namespace std;
int main() {
    // 读取两个整数
    int x, y;
    cin >> x >> y;
    // 将x除以y,得到一个浮点数
    double temp = (double)x / y;
    // 初始化结果
    int result;
    // 判断浮点数的正负
    if (temp >= 0) {
        // 如果是正数,直接取整
        result = (int)temp;
    } else {
        // 如果是负数,判断是否能整除
        if (x % y == 0) {
            // 如果能整除,直接取整
            result = (int)temp;
        } else {
            // 如果不能整除,取绝对值,加1,再取负
            result = ((int)abs(temp) + 1) * -1;
        }
    }
    // 输出结果
    cout << result;
    // 返回0,表示程序正常结束
    return 0;
}

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

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

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

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

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