#6682. A. 错误的减法(Wrong Subtraction)
A. 错误的减法(Wrong Subtraction)
A. 错误的减法(Wrong Subtraction)
时间 / 空间限制
- 时间限制:1 秒
- 内存限制:256 MB
题目描述
小女孩 Tanya 正在学习如何将一个整数减 1,但她的做法是错误的,尤其是当这个数是一个 两位或更多位的整数 时。
她的减法规则如下:
对于一个数字 ( n ):
- 如果 个位数字不为 0,她会将这个数减 1;
- 如果 个位数字为 0,她不会减 1,而是将这个数 除以 10(即删除末尾的 0)。
现在给定一个整数 ( n ),Tanya 会按照上述规则进行 ( k ) 次操作。
你的任务是输出经过这 ( k ) 次操作后的结果。
输入格式
一行两个整数:
含义:
- ( n ):初始数字
- ( k ):操作次数
输出格式
输出一个整数,表示经过 ( k ) 次操作后的结果。
保证条件
保证在进行 ( k ) 次操作后,结果始终是一个正整数。
样例
输入
512 4
输出
50
解释
操作过程如下:
512 → 511 → 510 → 51 → 50
输入
1000000000 9
输出
1
| 测试点编号 | 数据范围 / 输入 | 特殊性质 | 覆盖点与设计目的 |
|---|---|---|---|
| 1 | n = 1, k = 0 |
弱数据 | 不执行任何操作,检查 k = 0 边界 |
| 2 | n = 1, k = 1 |
单次减一后变为 0 |
|
| 3 | n = 10, k = 1 |
末位为 0,单次除以 10 |
|
| 4 | n = 19, k = 9 |
正常数据 | 连续减一,刚好减到 10,尚未除十 |
| 5 | n = 19, k = 10 |
连续减一后触发一次除十 | |
| 6 | n = 1000, k = 3 |
连续多个末尾 0,多次除十 |
|
| 7 | n = 1001, k = 4 |
先减一变成整十数,再连续除十 | |
| 8 | n = 12345, k = 5 |
多次减一后刚好到末位 0,不继续除十 |
|
| 9 | n = 12345, k = 6 |
在第 6 次操作触发除十,卡边界 | |
| 10 | n = 909090, k = 12 |
减一与除十交替出现,覆盖混合流程 | |
| 11 | n = 10¹⁸, k = 18 |
极限数据 | 大数且全为 10 的幂,连续除十到 1 |
| 12 | n = 9223372036854775807, k = 25 |
接近 long long 上界,覆盖大数连续减一与除十混合 |