#define int __int128 需与 signed main() { } 的配合使用
·
【知识点简介】
☀ 在提高+、省选及NOI赛题中,经常会遇到超级大的输入输出,此时就需要用 C/C++ 中的宏指令 #define int __int128 将代码中所有的 int 类型替换为 __int128 类型。或者使用 #define int long long 将代码中所有的 int 类型替换为 long long 类型。
☀ 使用 #define int __int128 或者 #define int long long 将代码中所有的 int 类型替换为 __int128 或者 long long 类型后,需配合 signed main(){} 使用,以避免使用 int main(){} 时导致返回值类型错误。
☀ __int128 类型无标准 I/O 支持,无法直接使用 cin / cout / scanf / printf,需手动实现读写函数。
int read() { //fast read
int x=0,f=1;
char c=getchar();
while(c<'0' || c>'9') { //!isdigit(c)
if(c=='-') f=-1;
c=getchar();
}
while(c>='0' && c<='9') { //isdigit(c)
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
void print(int x) {
if(x<0) putchar('-'), x=-x;
if(x>9) print(x/10);
putchar(x%10+'0');
}
【#define int __int128 应用实例】
详见:lanqiaoOJ 739:棋盘放麦子 ← #define int __int128
#include <bits/stdc++.h>
#define int __int128
using namespace std;
void print(int x) {
if(x<0) putchar('-'), x=-x;
if(x>9) print(x/10);
putchar(x%10+'0');
}
signed main() {
int sum=0,t=1;
for(int i=0; i<64; i++) {
sum+=t;
t*=2;
}
print(sum);
}
/*
18446744073709551615
*/
【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/148833294
https://www.luogu.com.cn/problem/P5091
https://www.luogu.com.cn/problem/P2568
https://www.luogu.com.cn/problem/P2303
https://blog.csdn.net/hnjzsyjyj/article/details/148128514
更多推荐

所有评论(0)