Cod sursa(job #1039480)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 23 noiembrie 2013 09:32:54
Problema Descompuneri Scor 16
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <algorithm>
using namespace std;
long long N, K, sol, nsol;
long long dvz[5010], desc[100], nr[1010][1010];
int nrdvz;

int main()
{
	int i, j, poz;
	ifstream fin("desc.in");
	fin >> N >> K;
	fin.close();
	
	for(long long d = 2; d * d <= N; ++d)
	{
		if(N % d == 0LL)
		{
			dvz[++nrdvz] = d;
			if(d * d < N)
				dvz[++nrdvz] = N / d;
		}
	}
	dvz[++nrdvz] = N;
	sort(dvz + 1, dvz + nrdvz + 1);
	dvz[0] = 1LL;
	
	for(i = 1; i <= nrdvz; ++i)
	{
		nr[0][i] = 1LL;
		for(j = nrdvz; j > 0; --j)
		{
			nr[i][j] = nr[i][j + 1];
			if(dvz[i] % dvz[j] == 0LL)
			{
				poz = lower_bound(dvz, dvz + nrdvz + 1, dvz[i] / dvz[j]) - dvz;
				nr[i][j] += nr[poz][j];
			}
		}
	}
	sol = nr[nrdvz][1];
	
	ofstream fout("desc.out");
	fout << sol << "\n";
	for(int i = 1; i <= nsol; ++i)
		fout << desc[i] << ' ';
	fout << "\n";
	fout.close();
	return 0;
}