Cod sursa(job #345797)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 4 septembrie 2009 19:12:52
Problema Mins Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>
#include<vector>
#define N 1000000
using namespace std;
int c,d,p,nr,ind;
int x[N+2];
int v[N+2][8];

void read()
{
	freopen("mins.in","r",stdin);
	freopen("mins.out","w",stdout);
	scanf("%d%d",&c,&d);
	c--;
	d--;
}

void ciur()
{
	int i,j;
	for(i=2;i<=N;i++)
		if(v[i][0]==0)
		{
			for(j=i;j<=N;j+=i)
			{
				v[j][++v[j][0]]=i;
			}
		}
}

void back(int k)
{
	if(k==v[ind][0])
	{
		if(nr&1)
			x[ind]-=ind/p;
		else
			x[ind]+=ind/p;
		return;
	}
	back(k+1);
	p=p*v[ind][k+1];
	nr++;
	back(k+1);
	nr--;
	p=p/v[ind][k+1];
}

void rez()
{
	int i,sol=0;
	for(i=1;i<=c;i++)
	{
		if(v[i][0]==0)
			x[i]=d-d/i;
		else
		{
			p=1;
			ind=i;
			nr=0;
			back(1);
		}
		sol+=x[i];
	}
	printf("%d\n",sol);
}

int main()
{
	read();
	ciur();
//	rez();
	return 0;
}