zoukankan      html  css  js  c++  java
  • 5238-整数校验器-洛谷3月赛gg祭

    传送门

    题目描述

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

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

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

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

    输入输出格式

    输入格式:

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

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

    输出格式:

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

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

    输入输出样例

    输入样例#1: 复制
    -3 3 4
    0
    00
    -0
    100000000000000000000
    输出样例#1: 复制
    0
    1
    1
    2
    

    说明

    对于 100% 的数据,0T512,l,r64 位有符号整型范围内

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

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

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

    ---------------------------------------------------------------------------------------------------------------------------------------------------

     这是一道很简单很简单很简单的模拟

    只是要注意到的点有很多

    (我真的真的都注意到了

    但是由于dr太弱太弱了

    (尤其是代码能力和debug精神)

    于是dr就写乱了

    啊啊啊啊啊啊

    5分gg

    (dr第一次参加乐多赛,不懂规则,提交多了,还扣了几分,就更可怜了)

    注意注意注意啦!!!!!!

    码风要好!!!!

    不能太慌张!!!

    多读题!!!!!

    先理好思路在写!

    多刷题!!!!!

    -----------------------------------------------------------------------------------------------------------------

    #include<bits/stdc++.h> 
    using namespace std;
    
    typedef long long ll;
    ll l,r;
    int t;
    
    inline int read()
    {
        int sum = 0,p = 1;
        char ch = getchar();
        while(ch < '0' || ch > '9')
        {
            if(ch == '-')
                p = -1;
            ch = getchar();
        }
        while(ch >= '0' && ch <= '9')
        {
            sum = sum * 10 + ch - '0';
            ch = getchar();
        }
        return p * sum;
    }
    
    int main()
    {
        scanf("%lld%lld",&l,&r);
        t = read();
        while(t--)
        {
            char qwq[1005];
            cin>>(qwq + 1);
            int len = strlen(qwq+1);
            if(qwq[1] == '-')
            {
                if(qwq[2] == '0' ||len == 1)
                {
                    printf("1
    ");
                    continue;
                }
            }
            if(qwq[1] == '0' && len != 1)
            {
                printf("1
    ");
                continue;
            }
            if(qwq[1] == '-' && len > 20)
            {
                printf("2
    ");
                continue;
            }
            if(qwq[1] != '-' && len > 19)
            {
                printf("2
    ");
                continue;
            }
            
            unsigned long long ans = 0;
            ll cnt = 0;
            if(qwq[1] == '-')
            {
                sscanf(qwq+2,"%llu",&ans);//从字符串的第二位开始读,把后面的所有数字转换为一个unsigned long long类型变量tmp后再进行处理。
                if(ans > (1LL<<63))
                {
                    
                    printf("2
    ");
                    continue;
                }
                cnt=-ans;
            }
            else
            {
                sscanf(qwq+1,"%llu",&ans);
                if (ans>=(1LL<<63))
                {
                    printf("2
    ");
                    continue;
                }
                cnt=ans;
            }
            puts(cnt>=l && cnt<=r?"0":"2");
            
        }
        return 0;
    } 

    用一下sstream里面的sscanf可以帮助简化代码

     
  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第4章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第3章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第1,2章 读书笔记(待更新)
    Tkinter的Message组件
    Git 实操/配置/实践
    mysq5.7.32-win安装步骤
    行为型模式之模板方法
    结构型模式之组合模式
    结构型模式之享元模式
    结构型模式之外观模式
  • 原文地址:https://www.cnblogs.com/darlingroot/p/10463044.html
Copyright © 2011-2022 走看看