前言:有些题目需要的数值刚好比 long long 的大值大那么一点点,那么我们就可以用__int128 来搏一搏(并不是所有OJ都支持这个数据类型,受编译标准影响)
成都创新互联公司2013年成立,是专业互联网技术服务公司,拥有项目成都做网站、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元彭州做网站,已为上家服务,为彭州各地企业和个人服务,联系电话:13518219792
大值是多少
int 大值:2^(32-1)-1【受电脑字长影响】
long 大值:2^(32-1)-1【不可改变】
冷知识:int 大小受电脑字长影响,早期电脑通常为16位,那么 int大值 为:2^(16-1)-1;好一点的电脑为32位,那么 int大值 为:2^(32-1)-1。
现在最差的电脑也有32位,一般为64位,绝大多数情况默认64位。
即目前 int大值 皆为2^(32-1)-1,不会更大。
long long 大值:2^(64-1)-1【不可改变】
__int128 大小:2^(128-1)-1 【不可改变】
关于__int128:只能进行四则运算,不能用cin和cout来输出(本蒟蒻在此不做解释),不能用位运算来定义大值。
定义大值 / 最小值
C/C++标准中自带大值和最小值宏定义(除了__int128,可能有,但是我没找到)
int 大值宏 INT_MAX
long 大值宏 LONG_MAX
long long 大值宏 LONG_LONG_MAX
因为可以四则运算,可以 __int128 MAX = LONG_LONG_MAX * LONG_LONG_MAX 来定义大值(2个LONG_LONG_MAX相乘最高位2^126,__int128大值最高位2^127-1,不会溢出)
最小值就是大值取个反,怕溢出的可以少算一点,比如 10 * LONG_LONG_MIN。
__int128的输入和输出
输入可以用string来读取,然后按位把值算进去
输出要手写,如下示例
#includeusing namespace std;
using maxType=__int128;
maxType a = (maxType)LONG_LONG_MAX*LONG_MAX;
void print(maxType x){
stacko;
while(x)o.push(x%10),x/=10;
while(!o.empty())cout<
可能会用到的该知识点的题:[传智杯 #5 初赛] E-梅莉的市场经济学 - 洛谷
参考博文:详解__int128 - FReQuenter - 博客园(更具体,包含什么时候可以使用__int128)(看什么看,不如直接搏一搏)
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章名称:详解-创新互联
文章出自:http://lswzjz.com/article/cdcech.html