Cod sursa(job #1210249)

Utilizator Etienne27Stefan Etienne27 Data 19 iulie 2014 15:26:01
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
#include <math.h>
using namespace std;
int a[1000],b[1000];
int o,w,t,q,f,n,fractii,i,j;
FILE*fin=fopen("fractii.in","r");
FILE*fout=fopen("fractii.out","w");
int divi(int k, int l)
{
	w=0;
	//fprintf(fout,"%d %d\n",k,l);
	for (o=2;o<=(k/2);o++)
	{
		if (k%o==0)
		{
			a[w]=o;
			//fprintf(fout,"%d ",a[w]);
			w++;
			while (k%o==0 && k>1)
				k=k/o;
		}
	}
	if (k!=1 || w==0)
	{	
		a[w]=k;
		//fprintf(fout,"%d ",a[w]);
		w++;
	}
	//fprintf(fout,"\n");
	q=0;
	for (o=2;o<=(l/2);o++)
	{
		if (l%o==0)
		{
			b[q]=o;
			//fprintf(fout,"%d ",b[q]);
			q++;
			while (l%o==0 && l>1)
				l=l/o;
		}
	}
	if (l!=1 || q==0)
	{	
		b[q]=l;
		//fprintf(fout,"%d ",b[q]);
		q++;
	}
	//fprintf(fout,"\n");
	t=0;
	for (o=0;o<w && t==0;o++)
	{
		for (f=0;f<q && t==0;f++)
		{
			if (a[o]==b[f])
				t=1;
		}
	}
	//fprintf(fout,"\n");
	if (t==1)
		return 0;
	else
		return 1;
}
int main()
{
	fscanf(fin,"%d",&n);
	
	fractii=0;
	for (i=1;i<=n;i++)
	{
		for (j=1;j<=n;j++)
		{
			if (i!=j)
			{
				if (divi(i,j))
				{	
					fractii++;
				//	fprintf(fout,"%d %d\n",i,j);
				}
			}
		}
	}
	fractii++;
	fprintf(fout,"%d",fractii);
}