Cod sursa(job #660170)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 11 ianuarie 2012 20:47:16
Problema Pascal Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<iostream>
#include<fstream>
using namespace std;
void desc(int n, long long x[10])
{
	int i;
	for (i=2;i<=5;i++)
		if (i!=4)
		{
			long long  y=i;
			while (n/y>0)
			{
				x[i]=x[i]+int (n/y);
				y*=y;
			}
		}
}
void adunare_v ( long long b[10], long long  c[10], long long a[10])
{
	int i;
	for (i=2;i<=5;i++)
		if (i!=4)
			b[i]=a[i]-b[i]-c[i];
}
int main(void)
{
	long long  n,d,nr=0,i;
	fstream f,g;
	f.open("pascal.in",ios::in);
	g.open("pascal.out",ios::out);
	f>>n>>d;
	long long  a[10]={0};
	desc (n,a);
	if (n==0 || n==1)
		{
			g<<0;
			return 0;
		}
	
	for (i=1;i<=n/2;i++)// !! par sau impar
	{
		long long w[10]={0},y[10]={0};
		desc(n-i,w);
		desc(i,y);
		adunare_v(w,y,a);
		if (d==2 && w[2]>0)
			nr+=2;
		else
			if (d==3 && w[3]>0)
				nr+=2;
			else
				if (d==4 && w[2]>1)
					nr+=2;
				else
					if (d==5 && w[5]>0)
						nr+=2;
					else
						if (d==6 && w[2]>0 && w[3]>0)
							nr+=2;
	}
	if (n%2==0)
		nr--;
	g<<nr;
}