编程实现 老师在黑板上写了一个不超过 500 500 位的整数 n n( 1 ⩽ n < 10 500 1⩽n<10 500 ),要求同学们擦掉其中任意 k k 个数字,剩余数字的顺序不变,希望得到的数最大。 例如: n = 69134 n=69134, k = 2 k=2,从 69134 69134 中擦掉 2 2 个数字;从左往右,将第一个位置的 6 6 和第三个位置的 1 1 擦掉,变成的新数 934 934 是最大的。 image 输入描述 输入两个整数 n n 和 k k( 1 ⩽ n < 10 500 , 0 ⩽ k < n 1⩽n<10 500 ,0⩽k<n 的位数),整数之间以一个空格隔开。 输出描述 输出一个整数,表示擦掉 k k 个数字后,得到的最大数。
以下是使用 Python 实现该功能的代码: ```python # 读取输入 n, k = input().split() k = int(k) # 将数字 n 转换为字符列表 digits = list(n) # 进行 k 次删除操作 while k > 0: i = 0 # 找到第一个满足 digits[i] < digits[i + 1] 的位置 while i < len(digits) - 1 and digits[i] >= digits[i + 1]: i += 1 # 删除该位置的数字 digits.pop(i) k -= 1 # 去除前导零 result = ''.join(digits).lstrip('0') # 如果结果为空,说明结果是 0 if result == '': result = '0' # 输出结果 print(result) ``` 代码解释: 1. 读取输入:通过 `input().split()` 读取用户输入的两个整数 `n` 和 `k`,并将 `k` 转换为整数类型。 2. 将数字转换为字符列表:将输入的数字 `n` 转换为字符列表 `digits`,方便进行删除操作。 3. 进行删除操作:循环 `k` 次,每次找到第一个满足 `digits[i] < digits[i + 1]` 的位置 `i`,并删除该位置的数字。 4. 去除前导零:使用 `lstrip('0')` 去除结果字符串的前导零。 5. 处理结果为空的情况:如果去除前导零后结果为空,说明结果是 0,将结果设为 `'0'`。 6. 输出结果:打印最终结果。 复杂度分析: - 时间复杂度:$O(k * m)$,其中 $m$ 是数字 `n` 的位数。 - 空间复杂度:$O(m)$,主要用于存储数字 `n` 的字符列表。 [2026-02-07 20:33:37 | AI问答 | 456点数解答]
- [字节豆包] 编程实现 老师在黑板上写了一个不超过 500 500 位的整数 n n( 1 ⩽ n < 10 500 1⩽n<10 500 ),要求同学们擦掉其中任意 k k 个数字,剩余数字的顺序不变,希望得到的数最大。 例如: n = 69134 n=69134, k = 2 k=2,从 69134 69134 中擦掉 2 2 个数字;从左往右,将第一个位置的 6 6 和第三个位置的 1 1 擦掉,变成的新数 934 934 是最大的。 image 输入描述 输入两个整数 n n 和 k k( 1 ⩽ n < 10 500 , 0 ⩽ k < n 1⩽n<10 500 ,0⩽k<n 的位数),整数之间以一个空格隔开。 输出描述 输出一个整数,表示擦掉 k k 个数字后,得到的最大数。(456点数解答 | 2026-02-07 20:33:37)2
- [DeepSeek] 有n个灯( 1 ≤ 𝑛 ≤ 10 9 ),编号为1,2,……n,同时有n个人,依次对灯进行操作。 开始时,所有灯是关闭状态。 第1人操作:将所有灯打开 第2人操作:将2及2的倍数的灯,状态取反,即开状态变为关状态,其状态变为开状态。 第3人操作:将3及3倍数的灯状态取反。 …… 第i人操作:将i及i的倍数的灯状态取反(1≤i≤n),当所有操作完成之后,计算出所有开状态灯的编号之和。 例如:n=6, 0—关状态,1—开状态 开始 0 0 0 0 0 0 第1人操作之后:变成 1 1 1 1 1 1 第2人操作之后:变成 1 0 1 0 1 0 第3人操作之后:变成 1 0 0 0 1 1 第4人操作之后:变成 1 0 0 1 1 1 第5人操作之后:变成 1 0 0 1 0 1 第6人操作之后:变成 1 0 0 1 0 0 所有开状态灯编号之和为 1+4=5 输入 一个整数 𝑛 输出 一个整数,即操作后所有开状态的灯编号之和。 样例输入 复制 6 样例输出 复制 5 来源/分类 数论 筛法(271点数解答 | 2026-01-18 12:41:43)57
- [字节豆包] 题目描述 请根据邮件的重量和用户选择是否加急计算邮费。计算规则: 重量在 1000 1000 以内(包括),基本费 8 8 元; 超过 1000 1000 克的部分,每 500 500 克加收超重费 4 4 元,不足 500 500 克部分按 500 500 克计算; 如果用户选择加急,多收 5 5 元。 输入格式 一行,包含一个正整数 x x 和一个字符 c(y 或 n),之间用一个空格隔开,分别表示重量和是否加急。 如果字符是 y,说明选择加急;如果字符是 n,说明不加急。 输出格式 输出一行一个正整数,表示邮费。 输入输出样例 输入 #1复制 1200 y 输出 #1复制 17 说明/提示 对于100%数据 1 ≤ x ≤ 1 0 6 1≤x≤10 6 在洛谷, 享受 coding 的欢乐(88点数解答 | 2024-11-09 15:33:30)379
- [阿里通义] 题目描述 请根据邮件的重量和用户选择是否加急计算邮费。计算规则: 重量在 1000 1000 以内(包括),基本费 8 8 元; 超过 1000 1000 克的部分,每 500 500 克加收超重费 4 4 元,不足 500 500 克部分按 500 500 克计算; 如果用户选择加急,多收 5 5 元。 输入格式 一行,包含一个正整数 x x 和一个字符 c(y 或 n),之间用一个空格隔开,分别表示重量和是否加急。 如果字符是 y,说明选择加急;如果字符是 n,说明不加急。 输出格式 输出一行一个正整数,表示邮费。 输入输出样例 输入 #1复制 1200 y 输出 #1复制 17 说明/提示 对于100%数据 1 ≤ x ≤ 1 0 6 1≤x≤10 6 在洛谷, 享受 coding 的欢乐(554点数解答 | 2024-11-09 15:34:05)386
- [字节豆包] 请根据邮件的重量和用户选择是否加急计算邮费。计算规则: 重量在 1000 1000 以内(包括),基本费 8 8 元; 超过 1000 1000 克的部分,每 500 500 克加收超重费 4 4 元,不足 500 500 克部分按 500 500 克计算; 如果用户选择加急,多收 5 5 元。 输入格式 一行,包含一个正整数 x x 和一个字符 c(y 或 n),之间用一个空格隔开,分别表示重量和是否加急。 如果字符是 y,说明选择加急;如果字符是 n,说明不加急。 输出格式 输出一行一个正整数,表示邮费。 输入输出样例 输入 #1复制 1200 y 输出 #1复制 17 说明/提示 对于100%数据 1 ≤ x ≤ 1 0 6 1≤x≤10 6(244点数解答 | 2024-12-31 19:36:29)293
- [字节豆包] 提示信息: 密码锁:由 n 个从左到右并排的圆环组成,每个圆环上都有 10 个数字(0~9),蓝色框内为密码显示区,每个圆环在密码显示区只能显示一个数字,如图所示。可以拨动圆环,来改变密码显示区显示的数字。 当密码显示区的数字与密码一致时,密码锁就会被打开。 image 编程实现: 有一个由 n 个圆环组成的密码锁,和一个 n 位的密码 S(S 由 1~9 中的数字(包含 1 和 9)组成)。每次操作只能选择一个或位置连续的多个圆环拨动。当 S 中的字符从左到右依次显示在密码显示区时,密码锁会被打开。 已知每个圆环在密码显示区初始数字都为 0,请计算最少需要操作多少次,才能打开密码锁。 注意: 1、如果选择了其中一个圆环,可将该圆环中任意一个数字拨动到密码显示区,表示 1 次操作; 例如:将第 3 个圆环拨动到数字 4,表示 1 次操作: image 2、如果选择了位置连续的多个圆环,只能将这些圆环拨动成同一个数字,显示在密码显示区,表示 1 次操作。 例如:将连续的第 2 个到第 3 个圆环都拨动到数字 5,表示 1 次操作: image 例如: n = 5,S (377点数解答 | 2025-11-08 22:11:16)91
- [字节豆包] 提示信息: 密码锁:由 n 个从左到右并排的圆环组成,每个圆环上都有 10 个数字(0~9),蓝色框内为密码显示区,每个圆环在密码显示区只能显示一个数字,如图所示。可以拨动圆环,来改变密码显示区显示的数字。 当密码显示区的数字与密码一致时,密码锁就会被打开。 image 编程实现: 有一个由 n 个圆环组成的密码锁,和一个 n 位的密码 S(S 由 1~9 中的数字(包含 1 和 9)组成)。每次操作只能选择一个或位置连续的多个圆环拨动。当 S 中的字符从左到右依次显示在密码显示区时,密码锁会被打开。 已知每个圆环在密码显示区初始数字都为 0,请计算最少需要操作多少次,才能打开密码锁。 注意: 1、如果选择了其中一个圆环,可将该圆环中任意一个数字拨动到密码显示区,表示 1 次操作; 例如:将第 3 个圆环拨动到数字 4,表示 1 次操作: image 2、如果选择了位置连续的多个圆环,只能将这些圆环拨动成同一个数字,显示在密码显示区,表示 1 次操作。 例如:将连续的第 2 个到第 3 个圆环都拨动到数字 5,表示 1 次操作: image 例如: n = 5,S (163点数解答 | 2025-11-15 21:22:40)83
- [GPT] 题目描述 请根据邮件的重量和用户选择是否加急计算邮费。计算规则: 重量在 1000 1000 以内(包括),基本费 8 8 元; 超过 1000 1000 克的部分,每 500 500 克加收超重费 4 4 元,不足 500 500 克部分按 500 500 克计算; 如果用户选择加急,多收 5 5 元。 输入格式 一行,包含一个正整数 x x 和一个字符 c(y 或 n),之间用一个空格隔开,分别表示重量和是否加急。 如果字符是 y,说明选择加急;如果字符是 n,说明不加急。 输出格式 输出一行一个正整数,表示邮费。(45点数解答 | 2024-12-16 22:26:01)348
- [GPT] 题目描述 请根据邮件的重量和用户选择是否加急计算邮费。计算规则: 重量在 1000 1000 以内(包括),基本费 8 8 元; 超过 1000 1000 克的部分,每 500 500 克加收超重费 4 4 元,不足 500 500 克部分按 500 500 克计算; 如果用户选择加急,多收 5 5 元。 输入格式 一行,包含一个正整数 x x 和一个字符 c(y 或 n),之间用一个空格隔开,分别表示重量和是否加急。 如果字符是 y,说明选择加急;如果字符是 n,说明不加急。 输出格式 输出一行一个正整数,表示邮费。(38点数解答 | 2024-12-16 22:27:37)258
- [字节豆包] 有一个由 n 个圆环组成的密码锁,和一个 n 位的密码 S(S 由 1~9 中的数字(包含 1 和 9)组成)。每次操作只能选择一个或位置连续的多个圆环拨动。当 S 中的字符从左到右依次显示在密码显示区时,密码锁会被打开。 已知每个圆环在密码显示区初始数字都为 0,请计算最少需要操作多少次,才能打开密码锁。 注意: 1、如果选择了其中一个圆环,可将该圆环中任意一个数字拨动到密码显示区,表示 1 次操作; 例如:将第 3 个圆环拨动到数字 4,表示 1 次操作: image 2、如果选择了位置连续的多个圆环,只能将这些圆环拨动成同一个数字,显示在密码显示区,表示 1 次操作。 例如:将连续的第 2 个到第 3 个圆环都拨动到数字 5,表示 1 次操作: image 例如: n = 5,S = "12321";分别表示 5 个圆环组成的密码锁和密码 12321;将 5 位密码 1、2、3、2、1 从左到右依次显示在密码显示区,以下是操作次数最少的方案: 第一次操作,将 5 个初始状态为 0 的圆环全部拨动到数字 1: image 第二次操作,将第 2 个到第 4 个圆(535点数解答 | 2026-02-06 19:44:08)6
- [字节豆包] 有一个由 n 个圆环组成的密码锁,和一个 n 位的密码 S(S 由 1~9 中的数字(包含 1 和 9)组成)。每次操作只能选择一个或位置连续的多个圆环拨动。当 S 中的字符从左到右依次显示在密码显示区时,密码锁会被打开。 已知每个圆环在密码显示区初始数字都为 0,请计算最少需要操作多少次,才能打开密码锁。 注意: 1、如果选择了其中一个圆环,可将该圆环中任意一个数字拨动到密码显示区,表示 1 次操作; 例如:将第 3 个圆环拨动到数字 4,表示 1 次操作: image 2、如果选择了位置连续的多个圆环,只能将这些圆环拨动成同一个数字,显示在密码显示区,表示 1 次操作。 例如:将连续的第 2 个到第 3 个圆环都拨动到数字 5,表示 1 次操作: image 例如: n = 5,S = "12321";分别表示 5 个圆环组成的密码锁和密码 12321;将 5 位密码 1、2、3、2、1 从左到右依次显示在密码显示区,以下是操作次数最少的方案: 第一次操作,将 5 个初始状态为 0 的圆环全部拨动到数字 1: image 第二次操作,将第 2 个到第 4 个圆(279点数解答 | 2026-02-06 19:45:27)6
- [阿里通义] #include "xxy.h" #include <qimage> #include <qtextedit> xxy::xxy(qobject *parent) : qobject(parent) {} void xxy::convertbmptoascii(qtextedit *textedit, const qstring &filepath) { qimage image(filepath); if (image.isnull()) { qdebug() << "failed to load image"; return; } qstring asciiart; for (int y = 0; y < image.height(); ++y) { for (int x = 0; x < image.width(); ++x) { qcolor color = image.pixelcolor(x, y); if (color.red()(560点数解答 | 2024-11-11 22:48:50)309