P5238 整数校验器

    • 788通过
    • 9.5K提交
  • 题目提供者 浮尘ii
  • 评测方式 云端评测
  • 标签
  • 难度 普及/提高-
  • 时空限制 1000ms / 128MB

题解

  • 提示:收藏到任务计划后,可在首页查看。
  • 体验新版界面

    最新讨论 显示

    推荐的相关题目 显示

    题目描述

    有些时候需要解决这样一类问题:判断一个数 $x$ 是否合法。

    $x$ 合法当且仅当其满足如下条件:

    • $x$ 格式合法,一个格式合法的整数要么是 $0$,要么由一个可加可不加的负号,一个 $1$ 到 $9$ 之间的数字,和若干个 $0$ 到 $9$ 之间的数字依次连接而成。
    • $x$ 在区间 $[l,r]$ 范围内(即 $l \le x \le r$)。

    你需要实现这样一个校验器,对于给定的 $l, r$,多次判断 $x$ 是否合法。

    输入输出格式

    输入格式:

    第一行三个整数 $l,r,T$,表示校验器的校验区间为 $[l,r]$,以及需要校验的 $x$ 的个数。

    接下来 $T$ 行,每行一个 $x$,表示要校验的数,保证 $x$ 长度至少为 $1$ 且仅由 '0'~'9' 及 '-' 构成,且 '-' 只会出现在第一个字符。

    输出格式:

    输出共 $T$ 行,每行一个整数,表示每个 $x$ 的校验结果。

    校验结果规定如下:$0$ 表示 $x$ 合法;$1$ 表示 $x$ 格式不合法;$2$ 表示 $x$ 格式合法且不在 $[l,r]$ 区间内。

    输入输出样例

    输入样例#1: 复制
    -3 3 4
    0
    00
    -0
    100000000000000000000
    输出样例#1: 复制
    0
    1
    1
    2
    

    说明

    对于 $100\%$ 的数据,$0 \le T \le 512$,$l,r$ 在 $64$ 位有符号整型范围内(即 $-2^{63}\le l \le r \le 2^{63}-1$)。

    保证输入文件大小不超过 $\text{128KB}$。数据在 linux 下生成,没有 '\r' 字符。

    以下为部分特殊限制(互不包含):

    • 有 $5\%$ 的数据,$T=0$。
    • 有 $25\%$ 的数据,保证 $x$ 格式一定合法。
    • 有 $30\%$ 的数据,保证如果 $x$ 格式合法,那么 $x$ 一定在 $64$ 位有符号整形范围内。

    其中有一个不计分的hack测试点,用于考察long long边界数字的判断,如果是100分UnAC的话,那么可能是你没有考虑这一种情况。

    提示
    标程仅供做题后或实在无思路时参考。
    请自觉、自律地使用该功能并请对自己的学习负责。
    如果发现恶意抄袭标程,将按照I类违反进行处理。