Pagini recente » Cod sursa (job #2502921) | Cod sursa (job #2293573) | Cod sursa (job #501507) | Cod sursa (job #1201572) | Cod sursa (job #635022)
Cod sursa(job #635022)
#include<stdio.h>
FILE *f, *g;
long long r , nr , nums , numd , rez , aux , nr2 , nr3 , nums2 , nums3 , numd2 , numd3 , x;
int d;
long div;
void citire();
void solve();
void tipar();
int main()
{
citire();
solve();
tipar();
return 0;
}
void citire()
{
f=fopen("pascal.in" , "r");
fscanf(f , "%lld%d" , &r , &d );
fclose(f);
}
void solve()
{
if(d == 6)
{
div = 2;
while(r/div)
{
nr2+=r/div;
div*=2;
}
div = 3;
while(r/div)
{
nr3+=r/div;
div*=3;
}
nums3 = nr3;nums2 = nr2;
x = r+1;
for( long long j = 1 ; j<=x/2 ; ++j )
{
long long aux = r;
while(aux%2==0)
{
nums2--;
aux/=2;
}
aux = r;
while(aux % 3==0)
{
nums3--;
aux/=3;
}
aux = j;
while(aux % 2 ==0)
{
numd2++;
aux/=2;
}
aux = j;
while(aux%3 == 3)
{
numd3++;
aux/=3;
}
long long d3 = nr3-nums3-numd3,d2=nr2-nums2-numd2;
if((d3 < d2 && d3)||(d2 < d3&&d2) )
rez++;
}
}
else
{
div = d;
while(r/div)
{
nr+=r/div;
div*=d;
}
nums = nr;
x = r+1;
for(long long j = 1 ;j<x/2;++j)
{
aux = r;
while(aux % d==0){
nums--;
aux/=d;
}
r--;
aux = j;
while(aux%d==0)
{
numd++;
aux/=d;
}
if(nr-nums-numd > 0)
rez++;
}
}
if(x%2 == 0)
rez = rez*2;
else
rez=2*rez+1;
}
void tipar()
{
g=fopen("pascal.out" , "w");
fprintf(g,"%lld" , rez );
fclose(g);
}