题目地址: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中除了常见的读(r).写(w).执行(x)权限以外,还有其他的一些特殊或隐藏权限,熟练掌握这些权限知识的使用, ...

  2. MySQL_参数设置

    1.max_allowed_packet 描述:有时备份数据库时,将本地psc文件备份到数据库时,会遇见备份不成功的情况 分析:这时要考虑,是否由于max_allowed_packet这个参数过小,导 ...

  3. SQL Server日志过大,清理日志

    直接执行下面的代码 USE [master] GO ALTER DATABASE 数据库 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 数据库 ...

  4. Java 微信公众号导出所有粉丝(openId)

    由于公众号换了公司主体,需要做迁移,玩家的openId数据需要做处理. (我是按我要的json格式,将粉丝导成了1万条数据的一个json文件) 文件格式: { "info":[ { ...

  5. Kafka技术内幕 读书笔记之(五) 协调者——消费组状态机

    协调者保存的消费组元数据中记录了消费组的状态机 , 消费组状态机的转换主要发生在“加入组请求”和“同步组请求”的处理过程中 .协调者处理“离开消费组请求”“迁移消费组请求”“心跳请求” “提交偏移量请 ...

  6. Ruby页面,循环赋值方法(类似java EL表达式赋值)

    ------------前台代码--------------- <% @form_hash.each_with_index do |f,index| %> <% item = f[: ...

  7. HDU 1007(套圈 最近点对距离)

    题意是求出所给各点中最近点对的距离的一半(背景忽略). 用分治的思想,先根据各点的横坐标进行排序,以中间的点为界,分别求出左边点集的最小距离和右边点集的最小距离,然后开始合并,分别求左右点集中各点与中 ...

  8. ThinkPHP中RBAC权限带菜单栏显示和详细权限操作

    RBAC是什么,能解决什么难题? RBAC是Role-Based Access Control的首字母,译成中文即基于角色的权限访问控制,说白了也就是用户通过角色与权限进行关联[其架构灵感来源于操作系 ...

  9. Spring Boot中使用使用Spring Security和JWT

     目标 1.Token鉴权 2.Restful API 3.Spring Security+JWT 开始 自行新建Spring Boot工程 引入相关依赖 <dependency> < ...

  10. 031、none和host网络的适用场景(2019-02-18 周一)

    参考https://www.cnblogs.com/CloudMan6/p/7053617.html   本节开始,会学习docker的几种原生网络,以及如何创建自定义网络.然后探究容器之间如何通信, ...