問題:標準入力ストリームでは、diapason [0、31]からの一連の数値のシーケンスが得られます。すべてのセットは-1で終了しました。すべてのセットは空でもよく、数字はセットで繰り返されてもよい。 すべての集合のXORを求め、結果の16進表現を出力する必要があります。つまり、{1,2,3}、{3,4}、{1,5}を得て、結果は{2,4,5}したがって、16進表現は34です。結果セットの各数値は、32ビットの16進表現のビットに対応します。コードの実行時エラー
#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、もちろん、もちろん! –
そして?あなたの最も簡単なテストは何ですか?また、あなたは裁判官と同じ結果を期待していますか?サイトは、望ましい結果をもたらしたそのような例を与えましたか? – Beta