专栏文章

题解:P12681 【MX-J15-T1】叉叉学习数据类型

P12681题解参与者 14已保存评论 15

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
15 条
当前快照
1 份
快照标识符
@mip5que0
此快照首次捕获于
2025/12/03 06:36
3 个月前
此快照最后确认于
2025/12/03 06:36
3 个月前
查看原文

出题人没说用哪个什么编译器那就按 32 位编译器算吧。
背过数据范围的同学都知道:
int2147483648x2147483647-2147483648\le x\le2147483647
int0x42949672950\le x\le4294967295
int9223372036854775808x9223372036854775807-9223372036854775808\le x\le9223372036854775807
int0x184467440737095516150\le x\le18446744073709551615
string:并无范围,看你内存大小咯。
写个高精度比大小然后硬算就行了。
CPP
#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;
}

评论

15 条评论,欢迎与作者交流。

正在加载评论...