【C/C++】关于_int128

C/C++有__int128这种神奇的大整数类型,但只能在Linux环境下能够使用(基于windows的oj和win下的IDE编译器都不能编译运行)

__int128不支持cin,cout,scanf,printf对其定义的变量的输入输出,需自己另写输入输出函数。

模板如下:

模板一:

#include 
using namespace std;
inline __int128 read(){
    __int128 x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}

inline void print(__int128 x){
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9)
        print(x/10);
    putchar(x%10+'0');
}

int main(void){
    __int128 a = read();
    __int128 b = read();
    print(a + b);
    cout<<endl;
    return 0;
}

模板二:

#include 
using namespace std;
 
void scan(__int128 &x)//输入
{
    x = 0;
    int f = 1;
    char ch;
    if((ch = getchar()) == '-') f = -f;
    else x = x*10 + ch-'0';
    while((ch = getchar()) >= '0' && ch <= '9')
        x = x*10 + ch-'0';
    x *= f;
}
void _print(__int128 x)
{
    if(x > 9) _print(x/10);
    putchar(x%10 + '0');
}
void print(__int128 x)//输出
{
    if(x < 0)
    {
        x = -x;
        putchar('-');
    }
    _print(x);
}
 
int main()
{
    __int128 a, b;
    scan(a); scan(b);
    print(a * b);
    return 0;
}

经测试,可输入输出至多38位的数字。

你可能感兴趣的:(C/C++学习笔记)