C/C++有__int128这种神奇的大整数类型,但只能在Linux环境下能够使用(基于windows的oj和win下的IDE编译器都不能编译运行)
__int128不支持cin,cout,scanf,printf对其定义的变量的输入输出,需自己另写输入输出函数。
模板一:
#include <bits/stdc++.h> 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 <bits/stdc++.h> 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位的数字。
