100 lines
2.3 KiB
C
100 lines
2.3 KiB
C
|
|
#include <stdbool.h>
|
|
#include <assert.h>
|
|
#include <assert.h>
|
|
#include <stdio.h>
|
|
|
|
#define N(array) (sizeof(array) / sizeof(*array))
|
|
|
|
// 0 1 2 3 4 5 6 7 8 9
|
|
int a[10] = { 2, 4, 5, 7, 9, 11, 15, 17, 17, 19};
|
|
int b[10] = {10, 11, 11, 14, 14, 19, 20, 23, 26, 29};
|
|
|
|
int c[20] = {
|
|
15, 17, 19, 21, 22, 25, 26, 26, 27, 32,
|
|
33, 33, 36, 39, 42, 44, 48, 49, 49, 49
|
|
};
|
|
|
|
// [ 0] [ 1] [ 2] [ 3] [ 4] [ 5] [ 6] [ 7] [ 8] [ 9]
|
|
// 2 4 5 7 9 11 15 17 17 19
|
|
// --------------------------------------------------
|
|
// [ 0] 10 | 12 14 (15) (17) (19) (21) (25) (27) (27) 29
|
|
|
|
// [ 1] 11 | 13 (15) 16 28 20 (22) (26) 28 28 30
|
|
|
|
// [ 2] 11 | 13 (15) 16 18 20 (22) (26) 28 28 30
|
|
|
|
// [ 3] 14 | 16 18 (19) (21) 23 (25) 29 31 31 (33)
|
|
|
|
// [ 4] 14 | 16 18 (19) (21) 23 (25) 29 31 31 (33)
|
|
|
|
// [ 5] 19 |(21) 23 24 (26) 28 30 34 (36) (36) 38
|
|
|
|
// [ 6] 20 |(22) 24 (25) (27) 29 31 38 40 40 (42)
|
|
|
|
// [ 7] 23 |(25) (27) 28 30 (32) 34 38 40 40 (42)
|
|
|
|
// [ 8] 26 | 28 30 31 (33) 35 37 41 43 43 45
|
|
|
|
// [ 9] 29 | 31 (33) 34 (36) 38 40 (44) 46 46 (48)
|
|
|
|
int main()
|
|
{
|
|
puts("hello, world!");
|
|
|
|
for (int ci = 0; ci < 20; ci++)
|
|
{
|
|
bool found[10][10] = {};
|
|
|
|
int goal = c[ci];
|
|
|
|
bool again = true;
|
|
|
|
while (again)
|
|
{
|
|
again = false;
|
|
|
|
int ai = 0, bi = 9;
|
|
|
|
while (ai < 10 && bi >= 0)
|
|
{
|
|
int sum = found[ai][bi] ? 0 : a[ai] + b[bi];
|
|
|
|
if (sum < goal)
|
|
{
|
|
ai++;
|
|
}
|
|
else if (sum > goal)
|
|
{
|
|
bi--;
|
|
}
|
|
else
|
|
{
|
|
assert(a[ai] + b[bi] == c[ci]);
|
|
|
|
printf("a[%2i] + b[%2i] == c[%2i] "
|
|
"(%2i + %2i == %2i)\n",
|
|
ai, bi, ci, a[ai], b[bi], c[ci]);
|
|
|
|
found[ai][bi] = true;
|
|
again = true;
|
|
|
|
bi--;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|