fbpx

Problema #1357 – plusminus – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa