LuoguP5238 整数校验器 题解
Content
给定两个整数 \(l,r\),再给定 \(T\) 个整数,请判断对于每个整数 \(x\),是否满足以下要求:
- \(x\in[l,r]\)。
- \(x\) 格式合法。
数据范围:\(-2^{63}\leqslant l,r\leqslant 2^{63}-1,0\leqslant T\leqslant 512\)。
Solution
一道模拟题。
我们先来判断这个数是否格式合法。格式不合法的情况有以下几种:
- 只有单独的一个负号。
- 以 \(0\) 开头且长度不为 \(1\)。
- 以一个负号和一个 \(0\) 开头。
这些特判完以后我们就来看这个数如何处理。由于这个数可能很大,所以在 C++ 语言中直接用普通的整型变量读入肯定是不科学的。所以一开始只能够用字符串来读入,然后就开始将其转化为数字,注意一定要看是否会超过 \(\textsf{long long}\) 的范围,一旦超过了就得结束此次判断。
如果转换完了,再看这个数字是否在这个范围里面。
Code
int t;
long long l, r;
bool judge1(string s) {
int len = s.size();
if(len != 1 && s[0] == '0') return 1;
if(len == 1 && s[0] == '-') return 1;
if(s[0] == '-' && s[1] == '0') return 1;
return 0;
}
int main() {
l = Rll, r = Rll, t = Rint;
while(t--) {
string s; cin >> s;
int len = s.size(), flag = 1; unsigned long long x = 0ll, f = 1ll;
if(judge1(s)) puts("1");
else {
if(s[0] == '-') f = -1ll;
for(int i = (s[0] == '-' ? 1 : 0); i < len; ++i) {
if(x > 922337203685477580ll || (x == 922337203685477580ll && ((f == 1ll && s[i] > '7') || (f == -1ll && s[i] > '8')))) {flag = 0; break;}
x = x * 10 + s[i] - '0';
}
long long res = x * f;
if(!flag || (res < l || res > r)) puts("2");
else puts("0");
}
}
return 0;
}
LuoguP5238 整数校验器 题解的更多相关文章
- P5238 整数校验器
题目地址:P5238 整数校验器 显然这道题不算难,细心即可AC 细节见代码中的注释 #include <bits/stdc++.h> #define ll long long using ...
- 洛谷 P5238 整数校验器
题目描述 有些时候需要解决这样一类问题:判断一个数 x 是否合法. x 合法当且仅当其满足如下条件: x 格式合法,一个格式合法的整数要么是 0,要么由一个可加可不加的负号,一个 1 到 9 之间的数 ...
- 洛谷P5238 整数校验器
看到没有边读入边处理的,我来水一发 我们要看一下有那些情况是格式不合法的 单独的负号 -0(后面可以有其他数字) 0 +(后面一些数字) 我们用快速读入的方法 读取字符进行处理 还有可能超出范围的 考 ...
- struts_23_xwork校验器列表使用例子
required 必填校验器 <field-validator type="required"> <message>性别不能为空!</message& ...
- struts_22_xwork校验器列表使用说明
系统提供的校验器列表如下: required (必填校验器,要求field的值不能为null) requiredstring (必填字符串校验器,要求field的值不能为null,并且长度大于0,默认 ...
- Struts2内建校验器(基于校验框架的文件校验)
位于xwork-2.0.4.jar压缩包中( com.opensymphony.xwork2.validator.validators)有个文件default.xml ,该文件中定义了Struts2框 ...
- 使用 Struts2 校验器校验用户注册信息
基于验证框架的输入校验 一.创建一个struts2项目testValidators.Struts2 初体验:http://www.cnblogs.com/likailan/p/3280820.html ...
- Struts 2 之校验器
对于输入校验,Struts2提供了两种方式,1.使用validate方法:2.基于XML配置实现 . validate()方法 支持校验的Action必须实现Validateable接口,一般直接继承 ...
- Struts2内置校验器——完整实例代码
一.校验器的配置风格 1.字段校验器: <field name="被校验的字段"> <field-validator type="校验器名"& ...
随机推荐
- 实战!spring Boot security+JWT 前后端分离架构认证登录!
大家好,我是不才陈某~ 认证.授权是实战项目中必不可少的部分,而Spring Security则将作为首选安全组件,因此陈某新开了 <Spring Security 进阶> 这个专栏,写一 ...
- iNeuOS工业互联网操作系统,分布式云端控制安全策略和增加实时日志功能
目 录 1. 概述... 2 2. 平台演示... 2 3. 云端控制策略和应用过程... 2 3.1 云端控制策略... 2 3.2 ...
- 洛谷 P3600 - 随机数生成器(期望 dp)
题面传送门 我竟然独立搞出了这道黑题!incredible! u1s1 这题是我做题时间跨度最大的题之一-- 首先讲下我四个月前想出来的 \(n^2\log n\) 的做法吧. 记 \(f(a)=\m ...
- Codeforces 582D - Number of Binominal Coefficients(Kummer 定理+数位 dp)
Codeforces 题目传送门 & 洛谷题目传送门 一道数论与数位 dp 结合的神题 %%% 首先在做这道题之前你需要知道一个定理:对于质数 \(p\) 及 \(n,k\),最大的满足 \( ...
- 【转】NG:垂枝桦基因组图谱构建(2+3组装)及重测序分析
转自希望组公众号.学习二代+三代组装策略的流程 垂枝桦(Betula pendula)是一种速生乔木,能在短短一年时间内开花,木质坚实,可做细工.家具等,经济价值极高.近日,芬兰研究人员对垂枝桦自交系 ...
- Redis—怎么查看Linux有没有安装Redis,如何启动Redis
1.检测是否有安装redis-cli和redis-server [root@localhost bin]# whereis redis-cli redis-cli: /usr/bin/redis-cl ...
- 各个浏览器的webdriver
Chrome 点击下载chrome的webdriver: http://chromedriver.storage.googleapis.com/index.html 不同的Chrome的版本对应的ch ...
- 数据集成工具—Sqoop
数据集成/采集/同步工具 @ 目录 数据集成/采集/同步工具 Sqoop简介 Sqoop安装 1.上传并解压 2.修改文件夹名字 3.修改配置文件 4.修改环境变量 5.添加MySQL连接驱动 6.测 ...
- linux 实用指令压缩和解压类
linux 实用指令压缩和解压类 目录 linux 实用指令压缩和解压类 gzip/gunzip指令(不常用) zip/unzip指令 tar指令(常用) gzip/gunzip指令(不常用) 说明 ...
- 纯CSS圆环与圆
1. 两个标签的嵌套: <div class="element1"> <div class="child1"></div> ...