求出两个整数的总和,即sum(a,b)=目标

任务是: 从文件input.txt输入并输出到文件output.txt 第一行是目标编号。 第二行是正整数1..999999999的序列。

如果这些整数中的任意两个之和等于目标,则程序必须输出1,否则输出0。

例:

5
1 7 3 4 7 9

输出1

有我的程序。它通过了5次测试,但第6次失败-错误的结果。我需要帮助来查找错误或将其重写。

#include <stdio.h>

int main() {
    FILE *fs = fopen("input.txt", "r");
    int target;
    fscanf(fs, "%d", &target);
    unsigned char bitset[1 + target / 8];

    int isFound = 0;

    for (int number; !isFound && fscanf(fs, "%d", &number) == 1;) {
        if (number <= target) {
            const int compliment = target - number;
            isFound = (bitset[compliment / 8] & (1 << (compliment % 8))) > 0;
            bitset[number / 8] |= 1 << (number % 8);
        }
    }
    fclose(fs);

    fs = fopen("output.txt", "w");
    fprintf(fs,"%d", isFound);
    fclose(fs);

    return 0;
}