题目地址: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 整数校验器的更多相关文章

  1. 洛谷 P5238 整数校验器

    题目描述 有些时候需要解决这样一类问题:判断一个数 x 是否合法. x 合法当且仅当其满足如下条件: x 格式合法,一个格式合法的整数要么是 0,要么由一个可加可不加的负号,一个 1 到 9 之间的数 ...

  2. 洛谷P5238 整数校验器

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

  3. LuoguP5238 整数校验器 题解

    Content 给定两个整数 \(l,r\),再给定 \(T\) 个整数,请判断对于每个整数 \(x\),是否满足以下要求: \(x\in[l,r]\). \(x\) 格式合法. 数据范围:\(-2^ ...

  4. struts_23_xwork校验器列表使用例子

    required 必填校验器 <field-validator type="required"> <message>性别不能为空!</message& ...

  5. struts_22_xwork校验器列表使用说明

    系统提供的校验器列表如下: required (必填校验器,要求field的值不能为null) requiredstring (必填字符串校验器,要求field的值不能为null,并且长度大于0,默认 ...

  6. Struts2内建校验器(基于校验框架的文件校验)

    位于xwork-2.0.4.jar压缩包中( com.opensymphony.xwork2.validator.validators)有个文件default.xml ,该文件中定义了Struts2框 ...

  7. 使用 Struts2 校验器校验用户注册信息

    基于验证框架的输入校验 一.创建一个struts2项目testValidators.Struts2 初体验:http://www.cnblogs.com/likailan/p/3280820.html ...

  8. Struts 2 之校验器

    对于输入校验,Struts2提供了两种方式,1.使用validate方法:2.基于XML配置实现 . validate()方法 支持校验的Action必须实现Validateable接口,一般直接继承 ...

  9. Struts2内置校验器——完整实例代码

    一.校验器的配置风格 1.字段校验器: <field name="被校验的字段"> <field-validator type="校验器名"& ...

随机推荐

  1. Linux检查和收集硬件信息的常用命令总结

    Linux检查和收集硬件信息的常用命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux基础真的很重要,基础不牢,地动山摇.这句话我是听老男孩创始人冉总说的一句话,起初 ...

  2. linux中文件多行合并为一行的例子

    现网中经常遇到匹配到某一关键字下的所有行合并到同一行,再次匹配到相关关键字再和下面的合并,示例如下: # line1ab# line2cde# line3f想要变成: # line1 a b# lin ...

  3. 网络编程基础【day09】:socket解决粘包问题之MD5(八)

    本节内容 1.概述 2.代码实现 一.概述 上一篇博客讲到的用MD5来校验还是用的之前解决粘包的方法,就是客户端发送一个请求,等待服务端的确认的这样的一个笨方法.下面我们用另外一种方法:就是客户端已经 ...

  4. JavaFX 简介

    JavaFX 介绍一提到Java的图形界面库,我们通常听到的都是Swing,或者更老一点的AWT,包括很多书上面介绍的也都是这两种.很多学校.培训班教学的也是这两种技术.但是其实这两种技术都已经过时很 ...

  5. TranslateMessage消息翻译和DispatchMessage消息分发

    TranslateMessage函数将虚拟键消息转换成字符消息.比如: 消息WM_KEYDOWN和WM_KEYUP组合产生一个WM_CHAR或WM_DEADCHAR消息. 消息WM_SYSKEYDOW ...

  6. python socket原理 及socket如何使(tcp udp协议)

    网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建立网络通信连接至少要一对端口号(socket).socket本质是编程接口(API) 主要内容: 1.基于 ...

  7. zookeeper安装(集群)

    Dubbo 建议使用Zookeeper 作为服务的注册中心.Zookeeper 集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的.正是基于这个特性,要将ZK 集群的节点数量要为奇数(2 ...

  8. 细说REST API安全之认证授权

    认证授权包含2个方面:(1)访问某个资源时必须携带用户身份信息,如:用户登录时返回用户access_token,访问资源时携带该参数.(2)检查用户是否具备访问当前资源(url或数据)的权限:访问资源 ...

  9. JAVA线程池ScheduledExecutorService周期性地执行任务 与单个Thread周期性执行任务的异常处理

    本文记录: 1,使用ScheduledExecutorService的 scheduleAtFixedRate 方法执行周期性任务的过程,讨论了在任务周期执行过程中出现了异常,会导致周期任务失败. 2 ...

  10. SQL Server进阶(十二)常用函数

    在SQL 2012基础教程中列出子句是按照以下顺序进行逻辑处理. FROM WHERE GROUP BY HAVING SELECT ORDER BY FROM TableName WHERE Use ...