326
Cerința
Fie n un număr natural.
Exemplu
nsir.in
33
nsir.out
3 3 9 9 9 3 5 5 5 15
Explicație
Se observă că
1) 1 = 1/3+1/3+1/9+1/9+1/9 și 33 = 3+3+9+9+9
2) 1 = 1/3+1/5+1/5+1/5+1/15 și 33 = 3+5+5+5+15
#include <bits/stdc++.h>
using namespace std;
ifstream cin("nsir.in");
ofstream cout("nsir.out");
int n , x[41] , ok;
void afisare(int k)
{
for(int i = 1 ; i <= k ; i++)
cout << x[i] << " ";
cout << '\n';
ok++;
}
void back(int k , int sp , double sp1)
{
for(int i = 1 ; i <= n ; i++)
{
x[k] = i;
if(k == 1 || x[k] >= x[k - 1])
{
sp += x[k];
sp1 += double(1.0 / x[k]);
if(sp <= n && sp1 <= 1.00001)
if(sp == n && sp1 + 0.00001 >= 1) afisare(k);
else back(k + 1 , sp , sp1);
sp -= x[k];
sp1 -= double(1.0 / x[k]);
}
}
}
int main()
{
cin >> n;
back(1 , 0 , 0);
if(ok == 0) cout << 0;
}
Comentarii