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

牛客周赛73B:JAVA

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

\hspace{15pt}小红拿到了正整数 xxx ,她希望你找到一个长度为 kkk 的区间,满足区间内恰好有 nnn 个数是 xxx 的倍数。你能帮帮她吗?

输入描述:

\hspace{15pt}在一行上输入三个整数 n,k,x(1≤n,k,x≤109)n,k,x \left(1\leq n,k,x \leq 10^9\right)n,k,x(1≤n,k,x≤109) 。

输出描述:

\hspace{15pt}如果答案不存在,直接输出 −1-1−1 ;否则,输出两个正整数 l,r(1≤l≤r<2×109; l+k−1=r)l,r \left(1\leq l \leq r < 2 \times 10^9;\ l + k - 1 = r\right)l,r(1≤l≤r<2×109; l+k−1=r) 代表答案。\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。

示例1

输入

2 5 3

输出

6 10

说明

\hspace{15pt}在这个样例中,[6,10][6,10][6,10] 区间内恰好有 222 个数是 333 的倍数,符合要
求。
import java.util.Scanner;public class Main {// 创建一个静态的 Scanner 对象用于读取输入static Scanner in = new Scanner(System.in);public static void main(String[] args) {// 读取三个整数 n, k, x//n是要找的数,k是区间长度,x是含的个数long n = in.nextInt(), k = in.nextInt(), x = in.nextInt();// 计算 (k-1)/x 的值,并存储在 pre 变量中long pre = (k - 1) / x;// 如果 pre+1 等于 n,则输出 x 和 x+k-1if (pre + 1 == n) {System.out.println(x + " " + (x + k - 1));} // 如果 pre 等于 n,则输出 x+1 和 x+kelse if (pre == n) {System.out.println((x + 1) + " " + (x + k));} // 否则输出 -1else {System.out.println(-1);}}
}

在公式 pre = (k - 1) / x 中,使用 (k - 1) 而不是 k 是为了确保计算的区间长度和包含的整数个数符合要求。

具体来说,考虑以下情况:

  • 区间长度 kk:表示目标区间的长度。
  • 包含的整数个数 xx:表示目标区间内需要包含的整数个数。

为什么使用 k - 1k−1?

假设我们有一个长度为 k k 的区间,并且我们希望在这个区间内找到恰好包含 x x 个整数的子区间。为了确保这个条件成立,我们需要计算能够完整包含多少个长度为 x x 的子区间。

示例分析

假设输入为:

 

复制代码

n = 3, k = 5, x = 2

  • 目标区间长度为 5。
  • 每个子区间长度为 2。

如果我们直接用 k 来计算:

 

复制代码

pre = k / x = 5 / 2 = 2.5

这表示我们可以有 2.5 个完整的子区间,但实际只能有 2 个完整的子区间(因为不能有半个子区间)。

为了确保我们只计算完整的子区间,我们需要减去 1:

 

复制代码

pre = (k - 1) / x = (5 - 1) / 2 = 4 / 2 = 2

这样,pre 的值就正确地反映了可以完整包含的子区间数量。

总结

通过使用 (k - 1),我们确保了计算结果只考虑完整的子区间,从而避免了出现不完整的子区间的情况。这样可以更准确地判断是否存在符合条件的区间,并输出正确的结果。

http://www.lryc.cn/news/510331.html

相关文章:

  • 【Ubuntu 20.4安装截图软件 flameshot 】
  • 剑指Offer|LCR 014. 字符串的排列
  • 【Agent】Chatbot、Copilot与Agent如何帮助我们的提升效率?
  • QT笔记- QTreeView + QFileSystemModel 当前位置的保存与恢复 #选中 #保存当前索引
  • OpenResty开发环境搭建
  • linux提示结构需要清理
  • 【扩展卡尔曼滤波理论推导与实践】【理论】【2/3 公式推导】
  • springboot494基于java的综合小区管理系统(论文+源码)_kaic
  • 深度学习blog-Transformer-注意力机制和编码器解码器
  • 敏感词 v0.24.0 新特性支持标签分类,内置实现多种策略
  • 随身 WiFi 连接 X-Wrt 共享网络与 IPv6 中继配置
  • Keil-编译按钮Translate,Build,Rebuild
  • No.1免费开源ERP:Odoo自定义字段添加到配置页中的技术分享
  • Linux 更改Jenkins使用其他账户启动
  • wordpres当前分类调用父分类的名称和链接
  • TCP客户端模拟链接websocket服务端发送消息(二)
  • 操作系统之同步与互斥的基本概念
  • 详细讲解axios封装与api接口封装管理
  • API 接口如何确保数据的安全?
  • HAL库STM32硬件IIC驱动数字电位器MCP4017
  • 「地平线」副总裁余轶南与「理想汽车」智驾产品总监赵哲伦联手创业,入局具身智能赛道!
  • 弹性盒子(display: flex)布局超全讲解|Flex 布局教程
  • 无问社区-无问AI模型
  • 如何记录日常笔记
  • 【魅力golang】之-反射
  • git--批量修改本地用户名和邮箱
  • Rofin罗芬激光PowerLine L300 PL400 Manual 软件
  • 【 thefuck 安装与使用】Linux 终端自动纠错工具:一头GitHub上的“草泥马“ - thefuck,妈妈再也不用担心我打错命令行了!
  • 牛客网刷题 ——C语言初阶——BC112小乐乐求和
  • 【PyTorch】(基础七)---- 完整训练流程