前言
这是给c++党的一点福利吧!(python根本不用写高精度)
对于一个懒懒的,不想写高精的人(就是我),每次都会遭遇到答案爆$long$ $long$的危险
比如说这道题:
题目传送门
最后的$23-25$的两个点,$long$ $long$甚至$unsigned$ $long$ $long$都无法满足,难道真的要手打高精度了吗?
不,我们有$\_$$\_$$int$$128$!
那么这到底是什么 可以吃吗 ?
关于$\_$$\_$$int$$128$
先来看看一些常见的整数变量能存的范围与占用的字节:
类型名称 | 占用字节 | 存储范围 |
$int$ | $4$ | $-2^{31}$ ~ $2^{31}-1$ |
$long$ $long$ | $8$ | $-2^{63}$ ~ $2^{63}-1$ |
$unsigned$ $long$ $long$ | $8$ | $0$ ~ $2^{64}-1$ |
再来看看$\_$$\_$$int$$128$
存储范围为$-2^{127}$ ~ $2^{127}-1$,但是占用了$128$字节
虽然内存占的多,但存储范围依然多
那么如何使用?
输入
其实就是把快读输入改了一改
__int128 read() { __int128 x=0; int f=1; char ch=getchar(); while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0' && ch<='9') x=(x<<1)+(x<<3)+(ch^48),ch=getchar(); return x*f; } __int128 n=read();
输出
其实也是把快输改了一改
void write(__int128 x) { if(x<0) x=-x,putchar('-'); if(x>9) write(x/10); putchar(x%10+'0'); } __int128 n; n=... write(n);
写在最后
$\_$$\_$$int$$128$是好,但是用的时候一定一定要注意空间限制!
当然,$\_$$\_$$int$$128$并不能完全取代高精,所以如果$\_$$\_$$int$$128$过不掉时,还是老老实实打高精吧!
原文链接: https://www.cnblogs.com/201929-whx/p/17062823.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/313822
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!