128位整形变量的使用教程
在 Dev-C++ 使用 __int128 时请在编译选项中添加编译参数:
-std=c++11,在在线 IDE 中请选择 C++11 以上语言,否则可能编译错误!
范围
__int128 在非必要情况下不建议使用,变量范围并不绝对准确!
\[-2^{128} \to 2^{128}
\]
输入输出
当前随笔更新与2024年2月,如若内容有所出入,请见谅!
使用 __int128 输入的时候无法使用 cin 和 scanf 等自带输入函数,需要自行撰写。
提示:__int128 除了加减乘除可以确保正确使用,其他不建议随意使用,特别是 Dev-C++ 自带函数!
输入函数模板(快读):
__int128 read()
{
__int128 flag=1,num=0;
char cum=getchar();
while(cum<'0' || cum>'9'){if(cum=='-')flag=-1;cum=getchar();}
while(cum>='0' && cum<='9'){num=(num<<3)+(num<<1)+(cum-'0');cum=getchar();}
return flag*num;
}
使用 __int128 输出的时候无法使用 cout 和 printf 等自带输出函数,需要自己撰写!
输出函数模板(极简):
void write(__int128 sum)
{
if(sum>=10){write(sum/10);printf("%d",(int)(sum%10));}
else printf("%d",(int)sum);
return;
}
使用例子
A+B Problem:
#include<bits/stdc++.h>
using namespace std;
__int128 read()
{
__int128 flag=1,num=0;
char cum=getchar();
while(cum<'0' || cum>'9'){if(cum=='-')flag=-1;cum=getchar();}
while(cum>='0' && cum<='9'){num=(num<<3)+(num<<1)+(cum-'0');cum=getchar();}
return flag*num;
}
void write(__int128 sum)
{
if(sum>=10){write(sum/10);printf("%d",(int)(sum%10));}
else printf("%d",(int)sum);
return;
}
int main()
{
__int128 a,b;
a=read();
b=read();
write(a+b);
return 0;
}
结言
使用 __int128 时要谨慎,比赛使用注意查看官方编译环境,以免无法使用!
注意语言!

浙公网安备 33010602011771号