口算练习

GESP二级练习,多重分支嵌套/数学函数,难度★✮☆☆☆。

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

题目要求

题目描述

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

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

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

提示:

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

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

上面的代码会输出 -1。

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

输入格式

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

输出格式

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

样例输入 #1

2 1

样例输出 #1

2

样例输入 #2

-3 2

样例输出 #2

-2

数据范围

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


题目分析

为了向下取整

  • (1)我们可以直接使用floor函数即可;
  • (2)如果手动计算:我们需要计算 xx 除以 yy 的结果,并将结果转换为整数。具体来说,如果结果为正数,我们直接取整数部分;如果结果为负数,我们需要判断 xx 是否能被 yy 整除,如果能,则直接取整数部分;如果不能,则需要向下取整,例如 1.5-1.5 向下取整为 2-2。(可以先变为正数,然后强转为int然后+1,再变为负数)

{% include custom/custom-post-content-inner.html %}

示例代码

代码一:使用floor函数

#include <cmath>
#include <iostream>

using namespace std;
int main() {
    int x, y; // 定义两个整数变量x和y
    cin >> x >> y; // 从输入流中读取x和y的值
    double ans = (double)x / (double)y; // 计算x除以y的结果,并将结果转换为浮点数
    cout << floor(ans); // 输出结果的整数部分
    return 0; // 返回0,表示程序执行成功
}

代码二:手动实现向零取整

#include <cmath>
#include <iostream>
using namespace std;
int main() {
    int x, y; // 定义两个整数变量x和y
    cin >> x >> y; // 从输入流中读取x和y的值
    double temp = (double)x / y; // 计算x除以y的结果,并将结果转换为浮点数
    int result; // 定义整数变量result
    if (temp >= 0) {
        result = (int)temp; // 如果结果非负,则直接取整数部分
    } else {
        if (x % y == 0) {
            result = (int)temp; // 如果x能被y整除,则直接取整数部分
        } else {
            result = ((int)abs(temp) + 1) * -1; // 如果x不能被y整除,则向零取整
        }
    }
    cout << result; // 输出结果
    return 0; // 返回0,表示程序执行成功
}

{% include custom/custom-post-content-footer.md %}

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

luogu-”系列题目可在 洛谷题库 在线评测。

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

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on