История изменений
Исправление vbr, (текущая версия) :
Моя версия на C, 19 строк.
#include <stdio.h>
void f(char *s0, char *s1, int n, long long x, long long y, int z) {
if (n >= 0) {
s1[0] = '0' + n;
f(s0, s1 + 1, n - 1, x, y * 10 + n, z);
s1[0] = '+';
s1[1] = '0' + n;
f(s0, s1 + 2, n - 1, x + y * z, n, 1);
s1[0] = '-';
f(s0, s1 + 2, n - 1, x + y * z, n, -1);
} else if (x + y * z == 200) {
s1[0] = 0;
puts(s0);
}
}
int main(void) {
char s0[18] = "9";
f(s0, s0 + 1, 8, 0, 9, 1);
}
Исходная версия vbr, :
Моя версия на C, 19 строк.
#include <stdio.h>
void f(char *s0, char *s1, int n, long long x, long long y, int z) {
if (n >= 0) {
s1[0] = '0' + n;
f(s0, s1 + 1, n - 1, x, y * 10 + n, z);
s1[0] = '+';
s1[1] = '0' + n;
f(s0, s1 + 2, n - 1, x + y * z, n, 1);
s1[0] = '-';
f(s0, s1 + 2, n - 1, x + y * z, n, -1);
} else if (x + y * z == 200) {
*s1 = 0;
puts(s0);
}
}
int main(void) {
char s0[18] = "9";
f(s0, s0 + 1, 8, 0, 9, 1);
}