1 条题解
-
0
题目详细题解
题意理解
题目要求判断一个整数 是否可能是由 ()漏掉乘方符号
^后写成的数字。例如:
- ,漏掉
^后写成 (不是 ,而是把指数 直接拼接在 后面) - 漏掉
^后写成
关键点:原始重要整数是 ,写错后的形式是:先写 ,然后紧接着写 这个数字(不写乘方符号)。
数字形式分析
设写错后的数字为 ,那么 必须满足:
- 以 "10" 开头 —— 因为原始数字是 后面直接拼接指数
- "10" 后面跟着的是指数 的十进制表示
因此 的形式必须是:字符
'1'后跟字符'0',再跟一个整数 ()的十进制数字串。分情况讨论
情况1: 的总长度为
此时 ,其中 是一位数字( 到 )。
由于 ,所以 可以取 。
对应的 取值范围:。情况2: 的总长度
此时 至少是两位数()。
的形式为: 后面跟着 的十进制表示。- 最小的 是 ,此时
- 题目给定 ,所以 最大为
- 最大可以是多少? 最多 位或 位?
实际上 ,所以 可能是 位或 位:- 若 是 位:, 是两位数, 范围 到
- 若 是 位:, 是三位数,最小 ,此时 ,但 ,超出范围
因此对于 ,只有 符合条件。
最终判断条件
综合以上两种情况,一个整数 是合法的当且仅当:
$$102 \le a \le 109 \quad \text{或} \quad 1010 \le a \le 1099 $$代码解析
for _ in range(int(input())): a = int(input()) if 102 <= a <= 109 or 1010 <= a <= 1099: print("YES") else: print("NO")示例验证
输入:
7 100 1010 101 105 2033 1019 1002输出:
- :不以 "10" 开头?实际以 "10" 开头,但长度为 时第三位是 ,不满足 → NO
- :属于 → YES
- :长度 ,第三位是 ,不满足 → NO
- :长度 ,第三位是 → YES
- :不以 "10" 开头 → NO
- :属于 → YES
- :以 "10" 开头,但长度为 ,第三位是 , 有前导零,不合法 → NO
与题目示例输出一致。
- ,漏掉
- 1
信息
- ID
- 6297
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者