正文

在 Dev-C++ 使用 __int128 时请在编译选项中添加编译参数:-std=c++11,在在线 IDE 中请选择 C++11 以上语言,否则可能编译错误!

范围

__int128 在非必要情况下不建议使用,变量范围并不绝对准确!

-2^128^2^128^

输入输出

使用 __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;
}

输出函数模板(极简):

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 时要谨慎,比赛使用注意查看官方编译环境,以免无法使用!

注意语言!