题解:P12681 【MX-J15-T1】叉叉学习数据类型
fish_love_cat · · 题解
注意到这题没给编译环境。
出题人没说用哪个什么编译器那就按 32 位编译器算吧。
背过数据范围的同学都知道:
int:
int:
int:
int:
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;
}