在FOR循环结束时获取分段错误

时间:2016-12-10 07:39:47

标签: c++ segmentation-fault

我在C ++程序的FOR循环结束时遇到分段错误。

这是我对codeforces问题的解决方案(比赛已经结束)。

这是我的代码。

85 64800
20812 83722 93301 72100 80530 13151 28349 97347 96271 41926 5482 11948 14969 90929 13749 92741 22218 21400 31801 10359 85151 23766 12470 68911 71675 33258 99921 44095 92037 36792 17169 81178 59941 37670 12836 26619 84395 5247 40024 15103 88105 87155 94050 11878 94868 8533 71675 37910 59558 22652 61981 8920 25631 62466 3498 69017 3488 14376 88486 98762 38766 86800 6168 76705 38901 14818 51981 45686 14274 13704 67957 75111 54600 74833 67172 13908 35100 93393 2610 63043 69433 3968 80412 11293 5053

我收到此输入错误。

MAKE-SOCKET

2 个答案:

答案 0 :(得分:1)

因为您的某些输入超出了大小为100010的数组num的大小

第34行

int p =(x ^ a [i]);

这是一个XOR操作,可以使p大于100010。 例如,您的输入接近100010但小于此值。当您使用64800对其进行异或时,您可以在该输入中使用0到1,这可以使其大于100010。

答案 1 :(得分:0)

操作x ^ a [i]可能会抛出一个大于10010的数字。尝试打印每次迭代的值并查看您拥有的值。