美团商家的订单编号初始值为 1 。每当发起一笔新订单时,编号自动加 1 。为了防止编号无限增大,商家设置了一个编号上限 m :一旦当前订单编号加 1 后大于 m ,下一个订单的编号将重新从 1 开始。 给定 q 次询问,第 i 次询问给出一对整数 (m_i,x_i) ,请你计算在编号上限为 m_i 的情况下,第 x_i 个订单的编号是多少。
输入的第一行包含一个整数 q(1≤ q≤ 5× 10^4) ,表示询问的数量。 接下来 q 行,第 i 行包含两个整数 m_i,x_i(1≤ m_i,x_i≤ 10^9) ——本次询问的参数。
对于每个询问,输出一行一个整数,表示答案。
4 2 3 5 17 8 2 4 4
1 2 2 4
考点:基础数学
数据规模 q ≤ 50000 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:基础数学
本题切入点
编号在 1..m 之间循环,第 x 个订单的编号为 ((x−1) mod m) + 1。
把题目转化为数学表达式,用公式或性质直接求值。
思路框架(基础数学 通法 · 非本题专属)
实现要点:浮点输出通常要求相对误差不超过 1e-7,注意用 double/long double 或高精度小数。
复杂度:时间 O(1) ~ O(log n) | 空间 O(1)
该范式的通法易错点
对照本题
样例 1:输入 4 / 2 3 / 5 17 / 8 2 / 4 4 → 输出 1 / 2 / 2 / 4
以第一组询问 (m,x)=(2,3) 为例:
订单编号序列为 1,2,1,2,... ,第 3 个编号为 1 ,故输出 1 。
其余询问均可按相同规则得到答案。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2023年美团秋招编程岗第二批笔试。