Pagini recente » Cod sursa (job #2685130) | Cod sursa (job #660637)
Cod sursa(job #660637)
#include<iostream>
#include<fstream>
using namespace std;
int ok( int d, long long w[])
{
if (d==4) return w[2]>1;
if (d==6) return w[2]>0 && w[3]>0;
return w[d]>0;
}
void desc(int n, long long x[])
{
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*i;
}
}
}
void adunare_v ( long long b[], long long c[], long long a[])
{
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[7]={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[7]={0},y[7]={0};
desc(n-i,w);
desc(i,y);
adunare_v(w,y,a);
if (ok(d,w))
nr+=2;
}
if (n%2==0)
nr--;
g<<nr;
}
/*
#include<stdio.h>
#include<math.h>
long r,d,nr,i,a[6],n1,n2,n;
void asd()
{
while(n1%2==0) {a[2]++;n1=n1/2;}
while(n1%3==0) {a[3]++;n1=n1/3;}
while(n1%5==0) {a[5]++;n1=n1/5;}
while(n2%2==0) {a[2]--;n2=n2/2;}
while(n2%3==0) {a[3]--;n2=n2/3;}
while(n2%5==0) {a[5]--;n2=n2/5;}
}
int div()
{
if(d==6) return a[2]>0&&a[3]>0;
if(d==4) return a[2]>1;
return a[d]>0;
}
int main()
{
FILE *f=fopen("pascal.in","rt");
FILE *g=fopen("pascal.out","wt");
fscanf(f,"%ld %ld",&n,&d);
r=n;
for(i=1;i<=r/2;i++,n--)
{
n1=n;
n2=i;
asd();
if(div())
nr=nr+2;
}
if(div()&& r%2==0)
nr--;
fprintf(g,"%ld",nr);
return 0;
}
*/