Cod sursa(job #3314484)

Utilizator tudor13mai@gmail.comBuciuman Tudor [email protected] Data 10 octombrie 2025 10:19:34
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.34 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
#define Mod 666013
int n,m;
int v[30];
struct s{
long long s[2][2];
} e;
s produs(s a, s b){
s z;
z.s[0][0]=((a.s[0][0]*b.s[0][0])%Mod+(a.s[0][1]*b.s[1][0])%Mod)%Mod;
z.s[0][1]=((a.s[0][0]*b.s[0][1])%Mod+(a.s[0][1]*b.s[1][1])%Mod)%Mod;
z.s[1][0]=((a.s[1][0]*b.s[0][0])%Mod+(a.s[1][1]*b.s[1][0])%Mod)%Mod;
z.s[1][1]=((a.s[1][0]*b.s[0][1])%Mod+(a.s[1][1]*b.s[1][1])%Mod)%Mod;
return z;
}
s Putere(s w,int n){
    if(n==1){
        return w;
    }
    if(n==0){
        return e;
    }
    if(n%2==0){
        s f=Putere(w,n/2);
        return produs(f,f);
    }
    else{
        return produs(Putere(w,n-1),w);
    }

}

void Afis(){
    for(int i=1; i<=n; i++)
        fout<<v[i]<<" ";
        fout<<'\n';
}
bool ok(int k){
    for(int i=1; i<k; i++){
        if(v[i]==v[k])
            return 0;
    }
    return 1;
}
bool sol(int k){
return k==n;
}
void Back(int k){
    for(int i=1; i<=n; i++){
        v[k]=i;
        if(ok(k)){
            if(sol(k)){
                Afis();
            }
            else{
                Back(k+1);
            }
        }
    }
}
int main(){
    ios::sync_with_stdio(false);
    fin.tie(NULL);
    fout.tie(NULL);
    fin>>n;
    Back(1);
    return 0;
}