Вставить между цифрами 1, 2, 3, 4, 9 знак одной из операций +-*/, так, чтобы результат 8-операций равнялся 100 - C (СИ)
Формулировка задачи:
Вставить между цифрами 1,2,3,4...9 знак одной из операций +-*/, так, чтобы результат 8-опреаций равнялся 100. Имеется 8 решений. Распечатать их со знаками.
1*2+3*4*5-6+7+8-9=10
Решение задачи: «Вставить между цифрами 1, 2, 3, 4, 9 знак одной из операций +-*/, так, чтобы результат 8-операций равнялся 100»
textual
Листинг программы
#include<stdio.h> char m[20]; const int N = 100; double binop(char o, double a, double b) { return o == '+' ? a + b : o == '-' ? a - b : o == '*' ? a*b : b == 0 ? 0 : a / b; } void f(double a, char o, double b, char op, int n) { m[n - 1] = op; if (n > 9) { double r = o == ' ' ? a : binop(o, a, b), e = 0.000001; if (r > N - e && r < N + e && m[1] == '+') { printf("1"); for (int i = 2; i <= 9; i++) printf("%c%d", m[i], i); printf("=%d\n", (int)r); } } else if (o == ' ') { f(a, '+', n, '+', n + 1); f(a, '-', n, '-', n + 1); f(a, '*', n, '*', n + 1); f(a, '/', n, '/', n + 1); } else { f(binop(o, a, b), '+', n, '+', n + 1); f(binop(o, a, b), '-', n, '-', n + 1); f(a, o, b*n, '*', n + 1); f(a, o, b / n, '/', n + 1); } } int main(void) { f(0, ' ', 0, ' ', 1); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д