1 条题解

  • 0
    @ 2025-8-24 22:08:33

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 浮尘ii
    **

    搬运于2025-08-24 22:08:33,当前版本为作者最后更新于2019-03-02 22:11:46,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    出题人来水一篇题解。

    首先这题是我半年前出的,当时还不懂 python 那一套姿势。

    今天听说被放到月赛 T1 来了,重新看了一下,发现直接 python 就水过去了(用 str(int(a)) 即可判断原串格式是否合法,int(a) 直接和 l,rl,r 比较大小就行了)。

    l, r, T = map(int, input().split())
    
    for i in range(T):
        s = input()
        if (s == "-"):
            print(1)
            continue
        n = int(s)
        if (str(n) != s):
            print(1)
        else:
        	if (n >= l and n <= r):
            	print(0)
        	else:
            	print(2)
    

    以下是原题解:

    按照题意模拟即可。

    注意到格式不合法会有如下情况:

    • -
    • 0-0\dots
    • 00\dots

    特判掉不合法后,先根据位数判断是否在 long long 范围内(可能仍然会爆 long long,使用 unsigned long long 存储),然后再判断大小即可。

    标程:

    #include <cstdio>
    #include <cstring>
    
    using ll = long long;
    using ull = unsigned long long;
    const size_t	maxL = (128 << 10) + 5;
    
    ll	L, R;
    int	T;
    char	X[maxL];
    
    void Judge()
    {
    	int	l = strlen(X + 1);
    
    	if(X[1] == '-') {
    		if(l == 1 || X[2] == '0') {
    			puts("1");
    			return;
    		}
    	} else if(X[1] == '0' && l != 1) {
    		puts("1");
    		return;
    	}
    
    	if(X[1] == '-' && l > 20) {
    		puts("2");
    		return;
    	}
    	if(X[1] != '-' && l > 19) {
    		puts("2");
    		return;
    	}
    
    	ull	tmp;
    	ll	x;
    	if(X[1] == '-') {
    		sscanf(X + 2, "%llu", &tmp);
    		if(tmp > 1ULL << 63) {
    			puts("2");
    			return;
    		}
    		x = -tmp;
    	} else {
    		sscanf(X + 1, "%llu", &tmp);
    		if(tmp >= 1ULL << 63) {
    			puts("2");
    			return;
    		}
    		x = tmp;
    	}
    
    	puts(x >= L && x <= R ? "0" : "2");
    }
    
    int main()
    {
    	for(scanf("%lld%lld%d", &L, &R, &T); T--; ) {
    		scanf("%s", X + 1);
    		Judge();
    	}
    
    	return 0;
    }
    
    
    • 1

    信息

    ID
    3883
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者