238
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