gpt4 book ai didi

__int128:懒人的福音

转载 作者:我是一只小鸟 更新时间:2023-01-24 22:31:16 25 4
gpt4 key购买 nike

前言

对于一个懒懒的,不想写高精的人 (就是我) ,每次都会遭遇到答案爆$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
                          
                          
                            ;
    
                          
                          
                            char
                          
                           ch=
                          
                            getchar();
    
                          
                          
                            while
                          
                          (ch<
                          
                            '
                          
                          
                            0
                          
                          
                            '
                          
                           || ch>
                          
                            '
                          
                          
                            9
                          
                          
                            '
                          
                          ) ch=
                          
                            getchar();
    
                          
                          
                            while
                          
                          (
                          
                            '
                          
                          
                            0
                          
                          
                            '
                          
                          <=ch && ch<=
                          
                            '
                          
                          
                            9
                          
                          
                            '
                          
                          ) x=x*
                          
                            10
                          
                          +ch-
                          
                            '
                          
                          
                            0
                          
                          
                            '
                          
                          ,ch=
                          
                            getchar();
    
                          
                          
                            return
                          
                          
                             x;
}
                            
...
__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$过不掉时,还是老老实实打高精吧! 。

最后此篇关于__int128:懒人的福音的文章就讲到这里了,如果你想了解更多关于__int128:懒人的福音的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com