問題:在標準輸入流上,我們從diapason [0,31]中得到一組數字序列。每套由-1完成。每一組都可能是空的,並且數字可能會被重複設置。 您需要找到所有集合的XOR並輸出結果的十六進制表示,即我們得到{1,2,3},{3,4},{1,5},結果爲{2,4,5},因此十六進制表示爲34.結果集中的每個數字對應於32位十六進制表示中的位。代碼中的運行時錯誤
#include <stdio.h>
#include <inttypes.h>
#include <stdint.h>
int main() {
int32_t currentNum;
uint32_t num = 0, result = 0;
while (scanf("%"SCNd32, ¤tNum) == 1) {
if (currentNum != -1) {
num |= 1 << currentNum;
} else {
result ^= num;
num = 0;
}
}
printf("%x\n", result);
return 0;
}
這個問題很簡單,我的解決辦法是上面的。但我有以下問題:我發送代碼的測試系統返回一個運行時錯誤。我無法想象哪裏是錯誤的,我不能想出一個返回運行時錯誤的測試。 你能給我任何提示嗎?
您是否在集合中重複測試過它? – Beta
@貝塔,當然可以! –
而且?你最簡單的這種測試是什麼,你確定你期望得到與法官相同的結果嗎?網站是否給出了這樣一個例子,並獲得了期望的結果? – Beta