1 条题解

  • 0
    @ 2025-8-24 23:17:23

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar fish_love_cat
    「要毁灭世界,根本不需要邪恶。起初,那些都是不会被任何人怪罪的小小愿望。而那样的愿望却如此轻易地,和末日相连在一起。」

    搬运于2025-08-24 23:17:23,当前版本为作者最后更新于2025-06-01 18:06:37,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    注意到这题没给编译环境。


    出题人没说用哪个什么编译器那就按 32 位编译器算吧。

    背过数据范围的同学都知道:

    int2147483648x2147483647-2147483648\le x\le2147483647
    int0x42949672950\le x\le4294967295
    int9223372036854775808x9223372036854775807-9223372036854775808\le x\le9223372036854775807
    int0x184467440737095516150\le x\le18446744073709551615
    string:并无范围,看你内存大小咯。

    写个高精度比大小然后硬算就行了。

    #include<bits/stdc++.h>
    using namespace std;
    // -1 -> a<b
    // 1 -> a>b
    // 0 -> a=b
    int bdx(string s1,string s2){
        int i=0,op=1;
        if(s1[0]=='-'&&s2[0]==s1[0])op=-1,i++;
        if(s1[0]=='-'&&op==1)return -1*op;
        if(s2[0]=='-'&&op==1)return 1*op;
        if(s1==s2)return 0*op;
        else if(s1.size()<s2.size())return -1*op;
        else if(s1.size()>s2.size())return 1*op;
        for(;i<s1.size();i++){
            if(s1[i]<s2[i])return -1*op;
            else if(s1[i]>s2[i])return 1*op;
        }
    }
    string s;
    int f(string x){
        return bdx(s,x);
    }
    int main(){
        cin>>s;
        if(f("-2147483648")>=0&&f("2147483647")<=0)puts("int");
        if(f("0")>=0&&f("4294967295")<=0)puts("unsigned int");
        if(f("-9223372036854775808")>=0&&f("9223372036854775807")<=0)puts("long long");
        if(f("0")>=0&&f("18446744073709551615")<=0)puts("unsigned long long");
        puts("string");
        return 0;
    }
    
    • 1

    信息

    ID
    12399
    时间
    2000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者