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

· · 题解

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

思路

主要问题就在于 n 的长度达到 100,因此用 __int128 存储,按题目顺序判断并输出。

代码

#include <bits/stdc++.h>
using namespace std;
__int128 a;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    string s;
    cin>>s;
    for (int i=0;i<s.size();i++){//从最高位开始依次转换 
        if (s[i]!='-'){
            a*=10;
            a+=s[i]-48;//数字的ascii码从48开始 
        }
    }
    if(s[0]=='-'){//负数 
        a=-a;
    }
    if(a>=-2147483648&&a<=2147483647){//int的数据范围 
        cout<<"int\n";
    }
    if(a>=0&&a<=4294967295){//unsigned int的数据范围 
        cout<<"unsigned int\n";
    }
    if(a>=-9223372036854775808&&a<=9223372036854775807){//long long的数据范围 
        cout<<"long long\n";
    }
    if(a>=0&&a<=18446744073709551615){//unsigned long long的数据范围 
        cout<<"unsigned long long\n";
    }
    cout<<"string";
    return 0;
}