Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用``1ll<&书信电报;(N-1)``给长整型变量赋值_C++_Arrays_Bitwise Operators_Unsigned Long Long Int - Fatal编程技术网

C++ 使用``1ll<&书信电报;(N-1)``给长整型变量赋值

C++ 使用``1ll<&书信电报;(N-1)``给长整型变量赋值,c++,arrays,bitwise-operators,unsigned-long-long-int,C++,Arrays,Bitwise Operators,Unsigned Long Long Int,我看到的问题是:给你一个大小为N的数组A。如果元素Ai的值(Ai)大于或等于Ki,且Ki是包含元素Ai的数组A的子集总数,则称元素Ai带电 逻辑就是一个数字作为子集出现的次数是2^N-1倍。但在一些测试案例中,N为4000+。因此,2^N-1将远远超出任何变量类型所能容纳的范围,但在编辑中,作者使用了1ll N; 长arr[N]; 对于(int i=0;i>arr[i]; 如果(N>=64) 库特 但这是什么 1ll是一个安全气囊1是一个十进制文本,ll是一个整数后缀。后缀ll表示整数文本的类型

我看到的问题是:给你一个大小为N的数组A。如果元素Ai的值(Ai)大于或等于Ki,且Ki是包含元素Ai的数组A的子集总数,则称元素Ai带电

逻辑就是一个数字作为子集出现的次数是2^N-1倍。但在一些测试案例中,N为4000+。因此,2^N-1将远远超出任何变量类型所能容纳的范围,但在编辑中,作者使用了
1ll N;
长arr[N];
对于(int i=0;i>arr[i];
如果(N>=64)
库特
但这是什么

1ll
是一个安全气囊
1
是一个十进制文本,
ll
是一个整数后缀。后缀
ll
表示整数文本的类型是
long-long-int
1
表示文本的值是,
1

它怎么能储存这么大的价值呢

我想你是在问线路:

long long val = (1ll << (N - 1));
这只是一个适合
long int
类型的数字。
long-long-int
类型至少有64位

如果没有
ll
后缀,
1
将具有
int
类型。在
int
类型小于64位(例如16位)的体系结构上,将发生未定义的行为。将变量左移一个大于或等于左操作数位长度的数字是未定义的行为,请参见示例

如果您询问有关线路的信息:

ans = (ans + arr[i] % M) % M;

它正在计算模和
#define M 100000007
。通常做的作业/家庭作业是计算这个数字的和模,参见ex或。该算法计算模和1000000007,而不是整数,这就是为什么它能够存储在代码>长长变量.< /P>两个方面:首先,C++没有真正拥有,虽然有些编译器将它添加为非可移植的扩展。其次,请阅读当前平台上的
long
是64位类型,因此
1ll
1ll << 63 - 1   =
1ll << 62       =
0x4000000000000000
ans = (ans + arr[i] % M) % M;