今天学习到__int128 类型
这是一个处理大数的很奇妙的方法。
正常来说,unsigned long long 已经是可以定义的最大的类型了,但是如果数据范围超过了2^64 就会爆炸。如果要处理比其大一点又不是那么大的数,就可以使用__int128这个定义。
注意:__int128 并不是所有编译器都可以使用。大型比赛不用顾虑,但蓝桥杯一定不要用,会报错。
关于__int128 要注意其输入输出不能直接使用cin和cout,需要自己手写一个按位输入输出的函数才可以。
模板如下:
1.输入流:
__int128 read()
{
__int128 f=1,w=0;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0')
{
w=w*10+ch-'0';
ch=getchar();
}
return f*w;
}
2,输出流:
void print(__int128 x)
{
if(x<0)
{
putchar('-');
x=-x;
}
if(x>9)print(x/10);
putchar(x%10+'0');
}