Pagini recente » Cod sursa (job #3187136) | Cod sursa (job #426911) | Cod sursa (job #1550266) | Cod sursa (job #604208) | Cod sursa (job #660592)
Cod sursa(job #660592)
#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;
}
}
}
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;
}