P5238 整数校验器
题目地址:P5238 整数校验器
显然这道题不算难,细心即可AC
细节见代码中的注释
#include <bits/stdc++.h>
#define ll long long
using namespace std;
string s, l, r;//对除了数据组数以外的所有数均用string存
inline bool pd0(int l, int r) {//判断是否每一位都符合要求
for (int i = l; i < r; i++)
if ('0' <= s[i] && s[i] <= '9') continue;
else return 0;
return 1;
}
inline bool pd1() {//判断是否合法
int len = s.length();
if (len == 1 && s[0] == '0') return 1;//0要特判
if (s[0] == '-') {//负数和正数分开判
if ('1' <= s[1] && s[1] <= '9')//判断首位是否符合要求
return pd0(2, len);
return 0;
}
if ('1' <= s[0] && s[0] <= '9')
return pd0(1, len);
return 0;
}
inline bool pd(string a, string b) {//判断a是否小于b
int lena = a.length(), lenb = b.length();
if (lena == lenb) {
int flag = 1;
for (int i = 0; i < lena; i++)
if (a[i] != b[i]) {
flag = 0;
break;
}
if (flag) return 1;//特判相等
}
if (a[0] == '-' && b[0] != '-') return 1;
if (a[0] != '-' && b[0] == '-') return 0;
if (a[0] == '-' && b[0] == '-') {//正数负数分开判
if (lena < lenb) return 0;
if (lena > lenb) return 1;//先判长度
for (int i = 1; i < lena; i++) {
if (a[i] == b[i]) continue;
if (a[i] < b[i]) return 0;
return 1;
}
}
if (a[0] != '-' && b[0] != '-') {
if (lena > lenb) return 0;
if (lena < lenb) return 1;
for (int i = 0; i < lena; i++) {
if (a[i] == b[i]) continue;
if (a[i] > b[i]) return 0;
return 1;
}
}
return 0;
}
inline bool pd2() {//判断是否越界
return pd(l, s) && pd(s, r);
}
int main() {
ios::sync_with_stdio(0);//用了string就必须用cin,加点速
cin >> l >> r;
int t;
cin >> t;
while (t--) {
cin >> s;
if (!pd1()) {//判断是否输出1
puts("1");
continue;
}
if (!pd2()) {//判断是否输出2
puts("2");
continue;
}
puts("0");
}
return 0;
}
P5238 整数校验器的更多相关文章
- 洛谷 P5238 整数校验器
题目描述 有些时候需要解决这样一类问题:判断一个数 x 是否合法. x 合法当且仅当其满足如下条件: x 格式合法,一个格式合法的整数要么是 0,要么由一个可加可不加的负号,一个 1 到 9 之间的数 ...
- 洛谷P5238 整数校验器
看到没有边读入边处理的,我来水一发 我们要看一下有那些情况是格式不合法的 单独的负号 -0(后面可以有其他数字) 0 +(后面一些数字) 我们用快速读入的方法 读取字符进行处理 还有可能超出范围的 考 ...
- LuoguP5238 整数校验器 题解
Content 给定两个整数 \(l,r\),再给定 \(T\) 个整数,请判断对于每个整数 \(x\),是否满足以下要求: \(x\in[l,r]\). \(x\) 格式合法. 数据范围:\(-2^ ...
- 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="校验器名"& ...
随机推荐
- Python的命名空间及作用域
命名空间的分类 全局命名空间 是在程序从上到下被执行的过程中依次加载进内存的:放置了我们设置的所有变量名和函数名 局部命令空间 就是函数内部定义的名字:当调用函数的时候 才会产生这个名称空间 随着函数 ...
- 解决Windows某一应用窗口一直置顶
------------------------------ 解决Chrome 窗口一直置顶问题 Ctrl + Alt + Esc ------------------------------
- C++回顾day01---<C++对C的增强>
一:命名空间 二:三目运算符 (一)C语言三目运算符返回值(不可修改) (二)C++中三目运算符直接返回变量本身(可以直接进行修改) 三:C++要求所有函数必须有类型(不重要) (一)C语言允许函数无 ...
- Centos6.6搭建Maven私服
操作系统:Centos6.6 私服Ip:10.0.210.112 JDK:1.7 (已安装并配置好了环境变量) 1:上 传 nexus-2.11.2-03-bundle.tar.gz到/root/ne ...
- Hadoop记录-yarn ResourceManager Active频繁易主问题排查(转载)
一.故障现象 两个节点的ResourceManger频繁在active和standby角色中切换.不断有active易主的告警发出 许多任务的状态没能成功更新,导致一些任务状态卡在NEW_SAVING ...
- VirtualBox安装Ubuntu14.04
创建虚拟机 点击 新建(N) 设置虚拟机的名称,类型与版本,如下图所示: 分配虚拟机的内存大小,受PC实际内存影响,暂时设置为2G,如下图所示: 分配虚拟机的硬盘大小,默认即可,如下图所示: 分配虚拟 ...
- Tips and Tricks for Debugging in chrome
Tips and Tricks for Debugging in chrome Pretty print On sources panel ,clicking on the {} on the bot ...
- Golang入门教程(十七)Linux/Windows下快速搭建和配置NSQ
前言 NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub,其当前最新版本是0.3.1版.NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消 ...
- pycharm仿sublime配色
1.设置IDE皮肤主题 file->setting->appearance->theme->darcula 2.setting中搜索python,将主题设置成Monokai,然 ...
- 使用Nginx在windows和linux上搭建集群
Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 特点:反向代理 负载均衡 动静分离… 反向代理(Reverse Pro ...