Cod sursa(job #2297358)

Utilizator usureluflorianUsurelu Florian-Robert usureluflorian Data 5 decembrie 2018 19:06:26
Problema Descompuneri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 3.07 kb
//Deşteaptă-te, române, din somnul cel de moarte,
//În care te-adânciră barbarii de tirani!
//Acum ori niciodată croieşte-ţi altă soartă,
//La care să se-nchine şi cruzii tăi duşmani!
//
//Acum ori niciodată să dăm dovezi în lume
//Că-n aste mâni mai curge un sânge de roman,
//Şi că-n a noastre piepturi păstrăm cu fală-un nume
//Triumfător în lupte, un nume de Traian!
//
//Înalţă-ţi lata frunte şi caută-n giur de tine,
//Cum stau ca brazi în munte voinici sute de mii;
//Un glas ei mai aşteaptă şi sar ca lupi în stâne,
//Bătrâni, bărbaţi, juni, tineri, din munţi şi din câmpii!
//
//Priviţi, măreţe umbre, Mihai, Ştefan, Corvine,
//Româna naţiune, ai voştri strănepoţi,
//Cu braţele armate, cu focul vostru-n vine,
//"Viaţă-n libertate ori moarte! " strigă toţi.
//
//Pre voi vă nimiciră a pizmei răutate
//Şi oarba neunire la Milcov şi Carpaţi!
//Dar noi, pătrunşi la suflet de sfânta libertate,
//Jurăm că vom da mâna, să fim pururea fraţi!
//
//O mamă văduvită de la Mihai cel Mare
//Pretinde de la fii-şi azi mână d-ajutori,
//https://Versuri.ro/w/v0l2
//Şi blastămă cu lacrimi în ochi pe orişicare,
//În astfel de pericol s-ar face vânzători!
//
//De fulgere să piară, de trăsnet şi pucioasă,
//Oricare s-ar retrage din gloriosul loc,
//Când patria sau mama, cu inimă duioasă,
//Va cere ca să trecem prin sabie şi foc!
//
//N-ajunse iataganul barbarei semilune,
//A cărui plăgi fatale şi azi le mai simţim;
//Acum se vâră cnuta în vetrele străbune,
//Dar martor ne e Domnul că vii nu o primim!
//
//N-ajunse despotismul cu-ntreaga lui orbie,
//Al cărui jug din seculi ca vitele-l purtăm ;
//Acum se-ncearcă cruzii, în oarba lor trufie,
//Să ne răpească limba, dar morţi numai o dăm!
//
//Români din patru unghiuri, acum ori niciodată
//Uniţi-vă în cuget, uniţi-vă-n simţiri!
//Strigaţi în lumea largă că Dunărea-i furată
//Prin intrigă şi silă, viclene uneltiri!
//
//Preoţi, cu cruce-n frunte! căci oastea e creştină,
//Deviza-i libertate şi scopul ei preasfânt.
//Murim mai bine-n luptă, cu glorie deplină,
//Decât să fim sclavi iarăşi în vechiul nost' pământ!
#include <bits/stdc++.h>
//sursa in scop didactic
using namespace std;
ifstream f ("desc.in");
ofstream g ("desc.out");
int k,i,j,N,dor[3003][3003];
long long n,v[3003];
map <long long,int> M;
void solve(int N,int x,int d)
{
    if(N==1) return;
    while(dor[N][d]-dor[N][d+1]<x)
    {
        x-=(dor[N][d]-dor[N][d+1]);
        ++d;
    }
    g<<v[d]<<' ';
    solve(M[v[N]/v[d]],x,d);
}
int main()
{
    f>>n>>k;
    for(i=1;1LL*i*i<n;++i) if(n%i==0) v[++N]=i,v[++N]=n/i;
    if(1LL*i*i==n) v[++N]=i;
    sort(v+1,v+N+1);
    for(i=1;i<=N;++i) M[v[i]]=i;
    for(j=N;j;--j)
    {
        dor[j][j]=1;
        for(i=j+1;i<=N;++i)
        {
            dor[i][j]=dor[i][j+1];
            if(v[i]%v[j]==0&&v[i]/v[j]>=v[j]) dor[i][j]+=dor[M[v[i]/v[j]]][j];
        }
    }
    g<<dor[N][2]<<'\n';
    solve(N,k,2);
    return 0;
}