Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream cin("sirpie.in");
- ofstream cout("sirpie.out");
- int n,i,sol[25],k,m[25];
- int Evalid(int k);
- void afisare();
- void back(int k);
- int cmmdc(int a,int b);
- int main()
- {
- cin>>n;
- for(int i=1;i<=n;i++)
- cin>>m[i];
- for(int i=1;i<n;i++)
- for(int j=i+1;j<=n;j++)
- if(m[i]>m[j])
- {
- int aux=m[i];
- m[i]=m[j];
- m[j]=aux;
- }
- back(1);
- return 0;
- }
- void back(int k)
- {
- if(n<k)
- afisare();
- else
- for(int i=1;i<=n;i++)
- {
- sol[k]=i;
- if(Evalid(k))
- if(k==n)
- afisare();
- else
- back(k+1);
- }
- }
- int Evalid(int k)
- {
- for(int i=1;i<k;i++)
- if(sol[i]==sol[k])
- return 0;
- if(k>1)
- if(cmmdc(m[sol[k]],m[sol[k-1]]) != 1)
- return 0;
- return 1;
- }
- void afisare()
- {
- for(int i=1;i<=n;i++)
- cout<<m[sol[i]]<<" ";
- cout<<endl;
- }
- int cmmdc(int a,int b)
- {
- while(b!=0)
- {
- int r=a%b;
- a=b;
- b=r;
- }
- return a;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement