首页 > 试题广场 >

小美的外卖订单编号

[编程题]小美的外卖订单编号
  • 热度指数:2796 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt} 美团商家的订单编号初始值为 1 。每当发起一笔新订单时,编号自动加 1 。为了防止编号无限增大,商家设置了一个编号上限 m :一旦当前订单编号加 1 后大于 m ,下一个订单的编号将重新从 1 开始。
\hspace{15pt} 给定 q 次询问,第 i 次询问给出一对整数 \left(m_i,x_i\right) ,请你计算在编号上限为 m_i 的情况下,第 x_i 个订单的编号是多少。

输入描述:
\hspace{15pt} 输入的第一行包含一个整数 q\left(1\leqq q\leqq 5\times 10^4\right) ,表示询问的数量。 
\hspace{15pt} 接下来 q 行,第 i 行包含两个整数 m_i,x_i\left(1\leqq m_i,x_i\leqq 10^9\right) ——本次询问的参数。


输出描述:
\hspace{15pt} 对于每个询问,输出一行一个整数,表示答案。
示例1

输入

4
2 3
5 17
8 2
4 4

输出

1
2
2
4

说明

\hspace{15pt} 以第一组询问 \left(m,x\right)=\left(2,3\right) 为例: 
\hspace{23pt}\bullet\, 订单编号序列为 1,2,1,2,\dots ,第 3 个编号为 1 ,故输出 1
\hspace{15pt} 其余询问均可按相同规则得到答案。
头像 Mag1c0nch
发表于 2024-11-25 19:16:05
从1到m的循环编号我们很快就能联想到取余,但是取余的下标是从0开始的,例如对m取余,代表着从0到m-1循环编号,我们发现可以提前给x减去1然后取余结束后再加一即可 #include <bits/stdc++.h> using namespace std; #define int long 展开全文
头像 Kato_Shoko
发表于 2024-11-25 22:13:48
特判一下就可以了。 #include <iostream> #include <queue> #include <map> #include <set> #include <cmath> #include <cstring> # 展开全文
头像 12316534
发表于 2024-11-26 00:08:26
for _ in range(int(input())): m,x=map(int,input().split()) if m>=x: print(x) elif x%m==0: print(m) else: pr 展开全文
头像 宿伞之神
发表于 2024-11-26 01:04:06
分类讨论题。 #include<bits/stdc++.h> #define int long long #define double long double #define x first #define y second using namespace std; typedef lo 展开全文
头像 剑绝尘
发表于 2025-05-06 23:04:19
#include <bits/stdc++.h> using namespace std; /* 用x-m小于等于x的最大倍数即可,但是有特殊情况就是m的最大倍数是x,这时编号是0,实际上为m,我们特判一下就行了 */ int main(){ int q; cin> 展开全文
头像 convie
发表于 2025-07-08 13:59:26
#include<iostream> #include<algorithm> #include<cstring> #include<vector> using namespace std; #define int long long #define i 展开全文
头像 开箱即用的贪吃蛇
发表于 2024-11-28 17:46:05
t = int(input()) for _ in range(0, t): m, x = map(int, input().split()) # 对m取余,0……m-1,以下操作可以满足 x -= 1 x %= m x += 1 print(x)
头像 Silencer76
发表于 2025-07-08 17:37:38
题目链接 小美的外卖订单编号 题目描述 美团商家的订单编号初始值为 1。每当发起一笔新订单时,编号自动加 1。为了防止编号无限增大,商家设置了一个编号上限 m:一旦当前订单编号加 1 后大于 m,下一个订单的编号将重新从 1 开始。 给定 T 次询问,第 i 次询问给出一对整数 m 和 x,请你计算 展开全文
头像 来泡池子了的西红柿很奔放
发表于 2024-11-26 22:51:36
#include <stdio.h> int main() { int q; if (scanf("%d", &q) != EOF) { for(int i = 0; i < q; i++) { 展开全文
头像 是基德吖
发表于 2024-11-27 10:34:17
import java.io.*; import java.util.*; import java.math.BigInteger; public class Main { static void solve() { int q = in.nextInt(); 展开全文