标签搜索

目 录CONTENT

文章目录

__int128:懒人的福音

沙漠渔
2024-01-19 03:58:27 / 0 评论 / 0 点赞 / 85 阅读 / 1,296 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-01-19,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

这是给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$过不掉时,还是老老实实打高精吧!

0
广告 广告

评论区