Cod sursa(job #593845)

Utilizator maritimCristian Lambru maritim Data 4 iunie 2011 18:47:05
Problema Mins Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>

#define MaxN 1000001

int A[MaxN];
int c;
int d;
unsigned long long MAX;
int MAX1;
int MIN1;

inline int min(int a,int b)
{
	return a<b? a:b;
}

inline int max(int a,int b)
{
	return a>b? a:b;
}

int cmmdc(int a,int b)
{
	if(!b) return a;
	else return cmmdc(b,a%b);
}

int main()
{
	FILE *f = fopen("mins.in","r");
	FILE *g = fopen("mins.out","w");
	
	fscanf(f,"%d %d",&c,&d);
	MAX1 = max(c-1,d-1);
	MIN1 = min(c-1,d-1);
	for(int i=1;i<=MAX1;i++)
		A[i] = i-1;
	for(int i=2;i<=MAX1;i++)
	{
		for(int j=i+i;j<=MAX1;j+=i)
			A[j] -= A[i];
		if(i<=MIN1)
			MAX += 2*A[i];
		else
			MAX += A[i];
	}
	++MAX;
	for(int i=MIN1+1;i<=MAX1;i++)
		for(int j=MIN1+1;j<=i;j++)
			if(cmmdc(i,j) == 1)
				MAX --;
	fprintf(g,"%d",MAX);
	
	fclose(g);
	fclose(f);
	return 0;
}