Cod sursa(job #470589)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 14 iulie 2010 18:30:11
Problema Mins Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <algorithm> 

using namespace std;

#define file_in "mins.in"
#define file_out "mins.out"

int a,b;
int p[1000],nrd;
int viz[1000];

void citire()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &a, &b);
}	

inline int cmmdc(int a, int b)
{
	int r;
	
	while(b)
	{
		r=a%b;
		a=b;
		b=r;
	}
	
	return a;
}

int uau(int x, int j)
{
	int i;
	for (i=1;i<=nrd;++i)
		 if (x%p[j]==0)
			 return 0;
	return 1;
}	

void solve()
{
	int i,j,nr=0,minim,maxim;
	for (i=2;i<=1000;++i)
		 if (viz[i])
		 {
			 p[++nrd]=i;
			 for (j=i+i;j<=1000;j+=i)
				  viz[j]=1;
		 }
	
    minim=min(a-1,b-1);
    maxim=max(a-1,b-1);
	
	for (i=2;i<=minim;++i)
		 for (j=1;j<i;++j)
			 if (j==1)
				  nr++;
			 else
			 if (cmmdc(i,j)==1) nr++;                    
    nr<<=1;
			 
  for (i=minim+1;i<=maxim;++i)
	   for (j=1;j<=minim;++j)
         if (j==1)
				  nr++;
			 else
			 if (uau(i,j)==1) nr++;      

	 printf("%d\n", nr+1);
		 

}

int main()
{
	citire();
	solve();
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}