Cod sursa(job #1073103)

Utilizator danny794Dan Danaila danny794 Data 5 ianuarie 2014 17:36:16
Problema Frac Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>

typedef long long ll;

using namespace std;

ll N, P, C, result;

void read() {
	freopen( "frac.in", "r", stdin);
	freopen( "frac.out", "w", stdout);
}

bool *ciur;

void sieve() {
	ciur = new bool[N];
	C = 1;
	for(ll i = 2; i < N; i++)
		if ( N % i == 0 ) {
			for(ll j = i; j < N; j+=i)
				ciur[j] = true;
		} else {
			if( !ciur[i] )
				C++;
		}

	int c = 0;
	if( P % C == 0) {
		result = ( P / C - 1 ) * N;
		P = C;
	} else {
		result = ( P / C ) * N;
		P = P % C;
	}

	ll i;
	for(i = 1; i < N; i++)
		if ( !ciur[i] ) {
			c++;
			if ( c == P )
				break;
		}

	printf("%lld", result + i);
}

int main() {
	read();
	scanf("%lld %lld", &N, &P);
	sieve();
	return 0;
}