题目描述

有些时候需要解决这样一类问题:判断一个数\(x\)是否合法.
\(x\)合法当且仅当其满足如下条件:

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

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

分析

先来水一发python题解

l,r,T=map(int, input().split())for i in range(T):s=input()if(s== "-"):print("1")continuen=int(s)if(str(n)!=s):print("1")else:if(n>=l and n<=r):print("0")else:print("2")

以下是正解:

按照题意模拟即可。

注意到格式不合法会有如下情况:

  • \(-\)
  • \(-0\dots\)
  • \(0\dots\)

特判掉不合法后,先根据位数判断是否在long long范围内(可能仍然会爆long long,使用unsigned long long存储),然后再判断大小即可.

Code

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <cctype>
#include <sstream>using namespace std;const int Maxn=1e6+5;
typedef long long LL;inline LL Input()
{register LL x=0;register int s=1,c=getchar();while(c<'0'||c>'9')(c=='-')&&(s=-1),c=getchar();while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+(c^48),c=getchar();return x*s;
}LL l,r;
int t;
char ch[Maxn];int main()
{l=Input(),r=Input(),t=Input();while (t--){scanf("%s",ch+1);int len=strlen(ch+1);if(ch[1]=='-'){if(ch[2]=='0'||len==1){puts("1");continue;}}else if(ch[1]=='0'&&len!=1){puts("1");continue;}else if(ch[1]=='-'&&len>20){puts("2");continue;}else if(ch[1]!='-'&&len>19){puts("2");continue;}unsigned LL tmp=0;LL x=0;if(ch[1]=='-'){sscanf(ch+2,"%llu",&tmp);if(tmp>(1LL<<63)){puts("2");continue;}x=-tmp;}else{sscanf(ch+1,"%llu",&tmp);if(tmp>=(1LL<<63)){puts("2");continue;}x=tmp;}puts(x>=l&&x<=r?"0":"2");}
}

转载于:https://www.cnblogs.com/Anverking/p/solution-lgp5238.html

LG P5238 整数校验器相关推荐

  1. 洛谷三月月赛——P5238 整数校验器

    题目链接: P5238 整数校验器 题目描述 有些时候需要解决这样一类问题:判断一个数 xxx 是否合法. xxx 合法当且仅当其满足如下条件: xxx 格式合法,一个格式合法的整数要么是 000,要 ...

  2. 洛谷P5238 整数校验器【三月月赛】

    题目描述 https://www.luogu.org/problemnew/show/P5238 主要考虑的有几点 1.单独"-"是不行的,-0类似的也不行,00,01,02这样的 ...

  3. 洛谷P5238 整数校验器

    看到没有边读入边处理的,我来水一发 我们要看一下有那些情况是格式不合法的 单独的负号 -0(后面可以有其他数字) 0 +(后面一些数字) 我们用快速读入的方法 读取字符进行处理 还有可能超出范围的 考 ...

  4. P5238 整数校验器 (3月份洛谷月赛2019)

    比较简单的题,把x按字符串读入,先检查是否合法,如果是一个合法的数,我们再去看是否在范围内,l,r都用字符串读入,然后手写一个字符串比较函数,然后比较是否在范围内就行了,别写出bug就行. 代码如下: ...

  5. Luogu 月赛 P5238 整数校验器

    原题传送门 #include <bits/stdc++.h> using namespace std;bool valid(string s) {if (s == "0" ...

  6. 使用 Struts2 校验器校验用户注册信息的例子

    转自:https://blog.csdn.net/jin2005006/article/details/53999562 基于验证框架的输入校验 一.创建一个struts2项目testValidato ...

  7. 字符串校验器 ExcelValidator.java

    简介 字符串校验器.开发excel批量处理数据时开发使用,快速校验读取出的每一个单元格数据是否符合预定格式: api 目标字符串是目标数组中的一个 checkContains(String[] arr ...

  8. cena评测系统:自定义校验器(自定义评测插件编写)

    Cena评测系统,最受欢迎的信息学竞赛离线评测系统. 它是开放源程序的信息学竞赛评测系统,能满足大多数程序设计竞赛的测评需求. 特色功能: 通过局域网自动收取选手程序. 高效率的数据文件配置工具. 自 ...

  9. spring-java使用Validation参数验证-自定义校验器

    在开发JAVA服务器端代码时,我们会遇到对外部传来的参数合法性进行验证,而hibernate-validator提供了一些常用的参数校验注解,我们可以拿来使用. spring-boot-web,内嵌了 ...

最新文章

  1. php构造和析构方法,php5构造函数与析构函数实例
  2. 基于FPGA的AFDX接口实现
  3. 免费的400GB网络存储空间
  4. 8.5 趣味游戏(2)
  5. Coursera自动驾驶课程第10讲:Feedforward Neural Networks
  6. linux下svn(subversion)服务端添加工程及配置权限
  7. 头部互金科技负责人领路知识图谱
  8. flash与js交互
  9. HNOI2004 郁闷的出纳员(Splay)
  10. Unity Android 动态更新 Assembly-CSharp.dll
  11. Oracle行转列、列转行的Sql语句总结
  12. python_四元数/旋转矩阵/欧拉角之间的相互变换(简单易用版)
  13. LeetCode之根据字符出现频率排序
  14. JN5169 ZigBee 3.0 协议栈之 ZPS 配置编辑器
  15. 计算机主机组装报告,[转载]计算机硬件系统及组装【大一计算机实验报告】
  16. 我还是很喜欢你,像风走了八千里,不问归期
  17. 在SVN服务器彻底删除文件
  18. 微信升级后不再使用x5内核,debugx5.qq.com打不开,如何开启微信调试?
  19. 殷国辉老师 银行行长经营管理专家
  20. 短文:U盘物理写保护原理

热门文章

  1. 高性能架构学习路线图-分布式架构演进
  2. Python读取EXCEL省份数据绘制地图
  3. jsp铁路交通查询系统
  4. HTML5本地视频播放器设计(+弹幕功能)
  5. Word题注带一级标题,由图一.1变为图1.1
  6. 家乡的春节html,家乡的春节作文(通用10篇)
  7. js实现倒计时,定时器--完成时间倒计时
  8. 这笔投资你算过吗?―写给二本院校的苦逼青年
  9. 7-7 厘米换算英尺英寸 (10分)
  10. Mysql数据库-初识Mysql