247
Cerința
Fie n
un număr natural.
Exemplu
plusminus.in
9
plusminus.out
- - + - + - + + - + - - + - - + - + + + - - + + - - + + + + + - + - - +
Explicație
Sunt 4 posibilități:
1) 9 = -12 – 22 + 32 – 42 + 52 – 62 + 72 + 82 – 92
2) 9 = +12 – 22 – 32 + 42 – 52 – 62 + 72 – 82 + 92
3) 9 = +12 + 22 – 32 – 42 + 52 + 62 – 72 – 82 + 92
4) 9 = +12 + 22 + 32 + 42 – 52 + 62 – 72 – 82 + 92
#include <bits/stdc++.h> using namespace std; ifstream cin("plusminus.in"); ofstream cout("plusminus.out"); int n , x[25] , ok; void afisare() { for(int i = 1 ; i <= n ; i++) if(x[i] == -1) cout << "- "; else cout << "+ "; cout << '\n'; ok++; } void back(int k , int sp) { for(int i = -1; i <= 1; i += 2) { x[k] = i; sp = sp + i * k * k; if(k == n) { if(sp == n) afisare(); } else back(k + 1 , sp); sp = sp - i * k * k; } } int main() { cin >> n; back(1 , 0); if(!ok) cout << "IMPOSIBIL"; }
Comentarii