Cod sursa(job #338804)

Utilizator Binary_FireFlorin Pg Binary_Fire Data 6 august 2009 23:09:45
Problema Mins Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>

using namespace std;

#define NMAX 1000001

int phi[NMAX];

int main()
{
	int C, D, i, j, jmin;
	long long ret = 0;

	freopen("mins.in","r",stdin);
	freopen("mins.out","w",stdout);

	cin >> C >> D;
	if ( C > D )
		swap(C,D);
	--C, --D;

	for ( i = 2; i <= D; ++i )
		if ( !phi[i] )
		{
			ret += min(C,i-1);
			if ( i <= C )
				ret += min(C,i-1);
			jmin = i;
			for ( j = 2 * i; j <= D; j += i )
			{
				if ( j <= C )
					jmin = j;
				else
					jmin = C;
				if ( !phi[j] )
					phi[j] = jmin - jmin/i;
				else
					phi[j] -= phi[j]/i;
			}
		}
		else
		{
			ret += phi[i];
			if (i <= C ) ret += phi[i];
		}

	++ret;
	if ( C == 0 || D == 0 ) ret = 0;

	cout << ret;

	return 0;
}