Cod sursa(job #1256319)
Utilizator | Data | 6 noiembrie 2014 08:14:11 | |
---|---|---|---|
Problema | Pascal | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.08 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int cate(int n, int d)
{
int s=0;
for(int i=d;i<=n;i*=d)
{
s+=(n/i);
}
return s;
}
int main()
{
int n, d, g[6], f[6], i, t;
fin>>n>>d;
int l=0;
g[2]=0;
g[3]=0;
g[5]=0;
for(i=1;i<=(n-1)/2;i++)
{
t=n-i+1;
while(t%2==0)
{
g[2]++;
t/=2;
}
while(t%3==0)
{
g[3]++;
t/=3;
}
while(t%5==0)
{
g[5]++;
t/=5;
}
t=i;
while(t%2==0)
{
g[2]--;
t/=2;
}
while(t%3==0)
{
g[3]--;
t/=3;
}
while(t%5==0)
{
g[5]--;
t/=5;
}
if(d==2 || d==3 || d==5)
{
if(g[d])
l++;
}
if(d==4)
{
if(g[2]/2)
l++;
}
if(d==6)
{
if(g[2] && g[3])
l++;
}
}
l*=2;
if(n%2==0)
{
i=n/2;
t=n-i+1;
while(t%2==0)
{
g[2]++;
t/=2;
}
while(t%3==0)
{
g[3]++;
t/=3;
}
while(t%5==0)
{
g[5]++;
t/=5;
}
t=i;
while(t%2==0)
{
g[2]--;
t/=2;
}
while(t%3==0)
{
g[3]--;
t/=3;
}
while(t%5==0)
{
g[5]--;
t/=5;
}
if(d==2 || d==3 || d==5)
{
if(g[d])
l++;
}
if(d==4)
{
if(g[2]/2)
l++;
}
if(d==6)
{
if(g[2] && g[3])
l++;
}
}
fout << l;
}