Cod sursa(job #881498)

Utilizator Noradllrares stoica Noradll Data 18 februarie 2013 09:20:42
Problema GFact Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
int main()
{
	FILE* f=fopen("gfact.in","r");
	FILE* g=fopen("gfact.out","w");
	int p,q;
	fscanf(f,"%d%d",&p,&q);

	int puteri[20];
	int val[20];
	int n=0;
	int cp = p;
	for(int i=2;i<=p;i++)
	{
		if (p%i==0)
		{
			puteri[n]=0;
			val[n]=i;
			while(p%i==0)
			{
				puteri[n]++;
				p/=i;
			}
			n++;
		}
	}
	for(int i=0;i<n;i++)
	{
		puteri[i]*=q;
	}

    p = cp;

	for(unsigned long long nr=2;nr<=p*q;nr++)
	{
		bool gasit=false;
		for(int i=0;i<n;i++)
		{
			int k=0;
			int v = val[i];
			for(int j=1;j<=puteri[i];j++)
			{
				k+=nr/v;
				v *= val[i];
				if(k>=puteri[i])
				{
					break;
				}
			}
			if(k<puteri[i])
			{
				gasit=true;
			}
		}
			
		if(!gasit)
		{
			fprintf(g,"%llu",nr);
			break;
		}
	}

	return 0;
}