__int128
就是占用128字节的整数存储类型。由于是二进制,范围就是 -2^127~2^127-1,如果使用了 unsigned __int128
,则范围变成 00 ~ 21282128,即约39位数,这在一定程度上可以替代高精度运算实现大数运算,而且操作难度更低,所以在数据范围不超过的情况下,都可以使__int128。
操作
由于_int128只能实现四则运算,不能用cin,cout,scanf,printf输入输出,我们首先应该写个快读和快写的函数;
快读函数
__int128 read()
{
//直接在函数里面实现读字符串操作更简洁
__int128 res=0;//初始结果赋值0
char scan[1005];
scanf("%s",scan);
for(int i=0;i<strlen(scan);i++)
res*=10,res+=scan[i]-'0';//实现进位
return res;//返回__int128类型
}
快写函数
void print(__int128 num)
{//递归调用,实现从高位向低位输出
if(num>9)
print(num/10);
putchar(num%10+'0');
}
由于 __int128 仅仅是 GCCGCC 编译器,不在C++98/03/11/14/17/20C++98/03/11/14/17/20 标准内,且仅 GCC4.6GCC4.6 以上64位版本支持,很多配套都没有,只有四则运算功能 除了要自己写输入输出。使用方法与 int long long 无异: