#P5238. 整数校验器

整数校验器

题目描述

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

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

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

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

输入格式

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

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

输出格式

输出共 TT 行,每行一个整数,表示每个 xx 的校验结果。

校验结果规定如下:00 表示 xx 合法;11 表示 xx 格式不合法;22 表示 xx 格式合法且不在 [l,r][l,r] 区间内。

-3 3 4
0
00
-0
100000000000000000000
0
1
1
2

提示

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

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

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

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

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