Cod sursa(job #1341412)

Utilizator kira2071Diana C kira2071 Data 12 februarie 2015 18:39:31
Problema Descompuneri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <cstio>
using namespace std;

long long n;
int st[50],k,v[50],r,w[50],o,q,p=1,c;

void memo()
{int i;
o=k;
for(i=1;i<=k; i++)
    w[i]=v[st[i]];
}

int valid()
{int i;
p=1;
for(i=1;i<=k; i++)
    {p*=v[st[i]];
    if(p>n)
        return 0;
    }
return 1;
}

void backc()
{
k=1;

while(k>=1)
    {
    if(st[k]<r)
        {
        st[k]++;
        if(valid()==1)
            {
            if(p==n)
                {
                c++;
                if(c==q)
                    memo();
                }
            else
                {
                k++;
                st[k]=st[k-1]-1;
                }
            }
        else
            k--;
        }
    else
        k--;
    }

}

int main()
{int i;
ifstream f("desc.in");
FILE *g;
g=fopen("desc.out","w");

f>>n>>q;
for(i=2; i<=n/2+1; i++)
    if(n%i==0)
        v[++r]=i;
backc();
c++;
fprintf(g,"%d\n",c);
if(q==c)
    fprintf(g,"%d",n);
else
    for(i=1;i<=o; i++)
        fprintf(g,"%d ",w[i]);


return 0;
}