题目描述

有些时候需要解决这样一类问题:判断一个数 x 是否合法。

x 合法当且仅当其满足如下条件:

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

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

输入输出格式

输入格式:

第一行三个整数 l,r,T,表示校验器的校验区间为 [l,r],以及需要校验的 x 的个数。

接下来 T 行,每行一个 x,表示要校验的数,保证 x 长度至少为 1 且仅由 '0'~'9' 及 '-' 构成,且 '-' 只会出现在第一个字符。

输出格式:

输出共 T 行,每行一个整数,表示每个 x 的校验结果。

校验结果规定如下:0 表示 x 合法;1 表示 x 格式不合法;2 表示 x 格式合法且不在 [l,r] 区间内。

输入输出样例

输入样例:

-  

-

输出样例:


说明

对于 100% 的数据,0≤T≤512,l,r 在 64 位有符号整型范围内(即 −263≤l≤r≤263−1)。

保证输入文件大小不超过 128KB。数据在 linux 下生成,没有 '\r' 字符。

以下为部分特殊限制(互不包含):

  • 有 5% 的数据,T=0。
  • 有 25% 的数据,保证 x 格式一定合法。
  • 有 30% 的数据,保证如果 x 格式合法,那么 x 一定在 64 位有符号整形范围内。

其中有一个不计分的hack测试点,用于考察long long边界数字的判断,如果是100分UnAC的话,那么可能是你没有考虑这一种情况。

解题思路

此题无非就是对每一个输入的数字进行判断,若是有效数字则进行范围判断,全程使用string操作即可

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<sstream>
using namespace std;

int t;
string l,r;
int cmp(string a,string b)
{
    #define small 0
    #define dengyu 1
    #define big 2
    ]==]!='-')
        return small;

    ]!=]=='-')
        return big;

    ]=='-')
    {
        if(a.size()>b.size())
            return small;
        if(a.size()<b.size())
            return big;

        ;i<a.size();i++)
        {
            if(a[i]>b[i])
                return small;
            else if(a[i]<b[i])
                return big;
        }
        return dengyu;
    }
    if(a.size()>b.size())
        return big;
    if(a.size()<b.size())
        return small;
    ;i<a.size();i++)
    {
        if(a[i]<b[i])
            return small;
        else if(a[i]>b[i])
            return big;
    }
    return dengyu;
}
void check(string tmp)
{
    ]=='-')
    {
        )
        {
            ]==')
            {
                printf("1\n");
                return;
            }
        }
        else
        {
            printf("1\n");
            return;
        }
    }
    ]==)
    {
        printf("1\n");
        return;
    }

//    printf("yes\n");
//    return;

    //经过筛选,为有效数字 

     && cmp(tmp,r)!=)
        printf("0\n");
    else
        printf("2\n");
    return;
}
int main()
{
    cin>>l>>r;
    scanf("%d",&t);//其实应该都用cin 

    ;i<=t;i++)
    {
        string tmp;
        cin>>tmp;

        check(tmp);
    }
    ;
}

洛谷 P5238 整数校验器的更多相关文章

  1. 洛谷P5238 整数校验器

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

  2. P5238 整数校验器

    题目地址:P5238 整数校验器 显然这道题不算难,细心即可AC 细节见代码中的注释 #include <bits/stdc++.h> #define ll long long using ...

  3. 洛谷4451 整数的lqp拆分(生成函数)

    比较水的一题.居然是一道没看题解就会做的黑题…… 题目链接:洛谷 题目大意:定义一个长度为 $m$ 的正整数序列 $a$ 的价值为 $\prod f_{a_i}$.($f$ 是斐波那契数)对于每一个 ...

  4. LuoguP5238 整数校验器 题解

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

  5. 洛谷 [P2146] 软件包管理器

    树剖 将一个软件是否安装,看作是sum数组的0或1,对于每个操作前后sum[1]的变化,就是所求 #include <iostream> #include <cstdio> # ...

  6. 洛谷P4035 球形空间产生器 [JSOI2008] 高斯消元

    正解:高斯消元 解题报告: 链接! 昂开始看到以为是,高斯消元板子题? 开始很容易想到的是,虽然是多维但是可以类比二维三维列出式子嘛 但是高斯消元是只能处理一元问题的啊,,,辣怎么处理呢 对的这就是这 ...

  7. 洛谷 - P2146 - 软件包管理器 - 重链剖分

    https://www.luogu.org/problem/P2146 继续重链剖分. 这里好像很好懂,每次安装软件就区间改值赋值整个路径是1,然后比较前后的sum值变化就可以了.事实上后一次的sum ...

  8. 【算法学习】【洛谷】树链剖分 & P3384 【模板】树链剖分 P2146 软件包管理器

    刚学的好玩算法,AC2题,非常开心. 其实很早就有教过,以前以为很难就没有学,现在发现其实很简单也很有用. 更重要的是我很好调试,两题都是几乎一遍过的. 介绍树链剖分前,先确保已经学会以下基本技巧: ...

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

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

随机推荐

  1. spark VS mapreduce

    Apache Spark,一个内存数据处理的框架,现在是一个顶级Apache项目. 这是Spark迈向稳定的重要一步,因为它越来越多地在下一代大数据应用中取代MapReduce. MapReduce是 ...

  2. 万网上如何将IP和申请的域名绑定

    万网上如何将IP和申请的域名绑定   在万网上购买了域名后,怎么将它和指定的IP进行绑定呢?下面简单介绍下 工具/原料   中国万网账号 购买的域名 服务器 方法/步骤     百度万网,找到网站后, ...

  3. Introduction to Razor Pages in ASP.NET Core

    https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/ 从ASP.NET Core 2.0.0版本之后,添加了新的特性Razor p ...

  4. 如何讓 iOS UIWebView 連線時傳送自訂 Cookie 的方法[转]

    利用 NSHTTPCookieStorage 管理 Cookie 傳送 在 iOS 中如果自行建立 UIWebView 來開啟遠端站台資料,這時可以透過以下方法加入 Cookie.原理是透過 iOS ...

  5. java并发编程实战:第五章----基础构建模块

    委托是创建线程安全类的一个最有效的策略:只需让现有的线程安全类管理所有的状态即可. 一.同步容器类 1.同步容器类的问题 同步容器类都是线程安全的,容器本身内置的复合操作能够保证原子性,但是当在其上进 ...

  6. shell 脚本 随机抽取班上学生

    #!/bin/bash # jw=('王浩' '谢云生' '黄科杨' '何星宇' '张宸兵' '邓培林' '刘桃' '杨沛东' '楚齐文' '咸鱼' '杨东' '>黄庭辉' '郑少文' '师靖' ...

  7. 转:css实现强制不换行/自动换行/强制换行

    css实现强制不换行/自动换行/强制换行 [日期:2007-08-22] 来源:  作者: [字体:大 中 小] 强制不换行 div{ white-space:nowrap;} 自动换行 div{  ...

  8. 【原创】在Windows系统中使用VC9、VC11编译32位、64位PHP及其扩展

    项目中需要使用runkit模块实现AOP,但是团队成员的开发环境都是Windows,而runkit模块官方没有提供Windows环境下的dll扩展,只能自己编译. 下面是编译过程的分类总结.(操作系统 ...

  9. 查看jar包的jdk版本并降级

    用解压工具打开jar包(例子都是用7zip)   进入到META-INF目录,查看MANIFEST.MF文件,查看Bulid-Jdk,下图就为1.7.0_55版本的JDK,这就表示jetty-serv ...

  10. Jenkins权限管控

    需求: 不同的账号角色进入只能看到自己对应的项目,且只能拥有构建等基本权限. 如wechat用户进入系统只能看到以wechat开头的job(具体匹配什么名称的job,可以设置) 目录: 1.安装插件 ...