pta 乙级1030 完美数列
第十五行为什么这样写就对 (long long)(ch[i]*p)这样就不行
或者第十五行不加long long ,定义时long long int p就行了
在我现在浅薄的认识里,爆是指int i,然后i的值超过了比如说2^32
这里又没有定义一个变量放ch[i]*p的值,也要long long 吗
不太理解
因为ch[i]*p如果ch[i]或p是int,ch[i]*p的结果也是int,如果它的值是大于2^32的话,会爆的,就是比如限制值最大为1111,就是只有四个位,然后有某个数二进制计算获得值本来是10000,由于只有四个位,所以实际上最终这个值是0000,就被误算为其他的结果了
一般看数据范围,和计算可能达到的值。这题是乘法,p最大有1e9,ai最大也有1e9。两者相乘就是1e18,而int最大是1e10左右,乘法计算就可能爆int,而爆int的答案要和aj进行比较,明显就不可能有正确的结果。