int main()
{
int M = 1000;
int numbers[] = {17, 19, 23, 29, 31, 37};
int N = sizeof(numbers) / sizeof(numbers[0]);
int values[N+1], count = 0, i, v;
for (i = N; i >= 0; i--) values[i] = 0;
while (1) {
if ((M - values[0]) % numbers[0] == 0)
count++;
for (i = 1; i < N; i++) {
v = values[i] + numbers[i];
if (v > M) continue;
break;
}
if (i == N) break;
while (i >= 0) values[i--] = v;
}
printf("count = %d\n", count
);
return 0;
}
CWludCBtYWluKCkKCXsKCQlpbnQgTSA9IDEwMDA7CgkJaW50IG51bWJlcnNbXSA9IHsxNywgMTksIDIzLCAyOSwgMzEsIDM3fTsKCQlpbnQgTiA9IHNpemVvZihudW1iZXJzKSAvIHNpemVvZihudW1iZXJzWzBdKTsKCQlpbnQgdmFsdWVzW04rMV0sIGNvdW50ID0gMCwgaSwgdjsKCQlmb3IgKGkgPSBOOyBpID49IDA7IGktLSkgdmFsdWVzW2ldID0gMDsKCgkJd2hpbGUgKDEpIHsKCQkJaWYgKChNIC0gdmFsdWVzWzBdKSAlIG51bWJlcnNbMF0gPT0gMCkKCQkJCWNvdW50Kys7CgkJCWZvciAoaSA9IDE7IGkgPCBOOyBpKyspIHsKCQkJCXYgPSB2YWx1ZXNbaV0gKyBudW1iZXJzW2ldOwoJCQkJaWYgKHYgPiBNKSBjb250aW51ZTsKCQkJCWJyZWFrOwoJCQl9CgkJCWlmIChpID09IE4pIGJyZWFrOwoJCQl3aGlsZSAoaSA+PSAwKSB2YWx1ZXNbaS0tXSA9IHY7CgkJfQoJCQoJCXByaW50ZigiY291bnQgPSAlZFxuIiwgY291bnQpOwoJCQoJCXJldHVybiAwOwoJfQo=