Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <cmath>
- using namespace std;
- ifstream f("nsir.in");
- ofstream g("nsir.out");
- int st[101],n,ex=0;
- double eps=0.00001;
- int suma1(int k)
- {
- int s=0;
- for(int i=1;i<=k;++i)
- s+=st[i];
- return s;
- }
- float suma2(int k)
- {
- float s=0;
- for(int i=1;i<=k;++i)
- s+=1./st[i];
- return s;
- }
- int validare(int k)
- {
- if(k==1)
- return 1;
- if(suma1(k)>n||(suma2(k)>1+eps))
- return 0;
- return 1;
- }
- void scrie(int k)
- {
- ex=1;
- for(int i=1;i<=k;++i)
- g<<st[i]<<' ';
- g<<endl;
- }
- void backtracking(int k)
- {
- if(k<=n)
- if((suma1(k-1)==n)&&(fabs(1-suma2(k-1))<eps))
- ex=1,scrie(k-1);
- else
- for(st[k]=st[k-1];st[k]<=n;++st[k])
- if(validare(k))
- backtracking(k+1);
- }
- int main()
- {
- f>>n;
- backtracking(1);
- if(ex==0)
- g<<0<<'\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement