Cod sursa(job #764415)

Utilizator UnforgivenMihai Catalin Botezatu Unforgiven Data 5 iulie 2012 10:34:03
Problema Frac Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <inttypes.h>
using namespace std;

int main()
{
	long long n;
	long long p;
	ifstream myfile("frac.in");
	myfile >> n >> p;
	
	myfile.close();
	long long h = 2;
	long nr = 0;
	int diviz[100];
	long long copy = n;
	long long prod = n;
	while (n != 1) 
	{
		bool ok = true;
		while (n % h==0)
		{
			ok = false;
			n = n/h;
		}
		if (!ok) { nr++; diviz[nr-1]=h;prod = prod * (h-1) / h;}
		h++;
	}
	
	long long cat = p / prod;
	long long rest = p % prod;
	int i;
	for (i=1;i<copy;i++)
	{
		bool ok = true;
	for (int j=0;j<nr;j++)
	{
		if (i% diviz[j] ==0) {ok = false;break;}
	}
	if (ok) rest--;
	if (rest == 0) break;
	}
	
	
	ofstream myfile2("frac.out");
	
	myfile2 << (i+cat*copy);
	myfile2.close();
	return 0;
}