Cod sursa(job #1893374)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 25 februarie 2017 17:31:35
Problema Descompuneri Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("desc.in");
ofstream g("desc.out");
int k,i,nr,j,d[3<<10][3<<10];
long long n,v[3<<10];
unordered_map<long long,int> M;
void afis(int x,int y,int z)
{
    if(x==1) return;
    while(d[x][z]-d[x][z+1]<y) y-=(d[x][z]-d[x][z+1]),++z;
    g<<v[z]<<' ';
    afis(M[v[x]/v[z]],y,z);
}
int main()
{
    f>>n>>k;
    for(i=1;1LL*i*i<n;++i)
        if(n%i==0) v[++nr]=i,v[++nr]=n/i;
    if(n%i==0) v[++nr]=i;
    sort(v+1,v+nr+1);
    for(i=1;i<=nr;++i) M[v[i]]=i;
    for(j=nr;j;--j)
    {
        d[j][j]=1;
        for(i=j+1;i<=nr;++i)
        {
            d[i][j]=d[i][j+1];
            if(v[i]%v[j]==0&&v[i]/v[j]>=v[j]) d[i][j]+=d[M[v[i]/v[j]]][j];
        }
    }
    g<<d[nr][2]<<'\n';
    afis(nr,k,2);
    return 0;
}