目录
- 简介
- 支持运算
- 输入输出
- 例题
简介
\(\_\_int 128\)并不是标准c/c++中的数据类型,而是一些特定编译器如gcc/g++提供的扩展数据类型。
支持运算
\(\_\_int128\)的是有符号128位整数变量,最多表示39位整数。
支持基本的加减乘除运算,以及按位与&、按位或|、按位异或^、左移<<、右移>>
输入输出
没有实现输入、输出,因此需要自己手动输入输出。
输入
__int128 read()
{__int128 x=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') w=-w;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return w*x;
}
输出
void write(__int128 x)
{if(x<0){putchar('-');x=-x;}if(x>9) write(x/10);putchar(x%10+'0');
}
例题
例题
华华教月月做数学
快速幂+__int128就可以过掉这道题目
#include <bits/stdc++.h>
using namespace std;__int128 read()
{__int128 x=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') w=-w;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*w;
}void write(__int128 x)
{if(x<0){putchar('-');x=-x;}if(x>9) write(x/10);putchar(x%10+'0');
}__int128 qpow(__int128 a, __int128 b, __int128 p)
{__int128 res=1;while(b){if(b&1) res=res%p*a%p;a=a%p*a%p;b>>=1;}return res;
}int main()
{int t;scanf("%d",&t);while(t--){__int128 a=read(),b=read(),p=read();write(qpow(a,b,p));puts("");}
}