Pagini recente » Cod sursa (job #306827) | Cod sursa (job #2045182) | Cod sursa (job #694751) | Cod sursa (job #1749458) | Cod sursa (job #603912)
Cod sursa(job #603912)
#include <fstream.h>
long total=0;
void doi (long numar)
{
long i, aux, ptR=0, primul, doilea, auxiliar;
aux=numar;
while (aux)
{
aux>>=1;
ptR+=aux;
}
if (numar & 1)
{
auxiliar=numar>>1;
for (i=1; i<=auxiliar; i++)
{
aux=i;
primul=0;
doilea=0;
while (aux)
{
aux>>=1;
primul+=aux;
}
aux=numar-i;
while (aux)
{
aux>>=1;
doilea+=aux;
}
if (ptR > primul+doilea) total+=2;
}
}
else
{
auxiliar=numar>>1;
for (i=1; i<auxiliar; i++)
{
aux=i;
primul=0;
while (aux)
{
aux>>=1;
primul+=aux;
}
aux=numar-i;
doilea=0;
while (aux)
{
aux>>=1;
doilea+=aux;
}
if (ptR > primul+doilea) total+=2;
}
primul=0;
aux=numar>>1;
while (aux)
{
aux>>=1;
primul+=aux;
}
if (ptR > (primul<<1)) total++;
}
}
void trei (long numar)
{
long i, aux, ptR=0, primul, doilea, miu;
aux=numar;
while (aux)
{
aux/=3;
ptR+=aux;
}
if (numar & 1)
{
miu=numar>>1;
for (i=1; i<=miu; i++)
{
aux=i;
primul=0;
doilea=0;
while (aux)
{
aux/=3;
primul+=aux;
}
aux=numar-i;
while (aux)
{
aux/=3;
doilea+=aux;
}
if (ptR > primul+doilea) total+=2;
}
}
else
{
miu=numar>>1;
for (i=1; i<miu; i++)
{
aux=i;
primul=0;
doilea=0;
while (aux)
{
aux/=3;
primul+=aux;
}
aux=numar-i;
while (aux)
{
aux/=3;
doilea+=aux;
}
if (ptR > primul+doilea) total+=2;
}
primul=0;
aux=numar>>1;
while (aux)
{
aux/=3;
primul+=aux;
}
if (ptR > (primul<<1)) total++;
}
}
void cinci (long numar)
{
long i, aux, ptR=0, primul, doilea, miu;
aux=numar;
while (aux)
{
aux/=5;
ptR+=aux;
}
if (numar & 1)
{
miu=numar>>1;
for (i=1; i<=miu; i++)
{
aux=i;
primul=0;
doilea=0;
while (aux)
{
aux/=5;
primul+=aux;
}
aux=numar-i;
while (aux)
{
aux/=5;
doilea+=aux;
}
if (ptR > primul+doilea) total+=2;
}
}
else
{
miu=numar>>1;
for (i=1; i<miu; i++)
{
aux=i;
primul=0;
doilea=0;
while (aux)
{
aux/=5;
primul+=aux;
}
aux=numar-i;
while (aux)
{
aux/=5;
doilea+=aux;
}
if (ptR > primul+doilea) total+=2;
}
primul=0;
aux=numar>>1;
while (aux)
{
aux/=5;
primul+=aux;
}
if (ptR > (primul<<1)) total++;
}
}
void patru (long numar)
{
long i, aux, ptR=0, primul, doilea, miu;
aux=numar;
while (aux)
{
aux>>=1;
ptR+=aux;
}
if (numar & 1)
{
miu=numar>>1;
for (i=1; i<=miu; i++)
{
aux=i;
primul=0;
doilea=0;
while (aux)
{
aux>>=1;
primul+=aux;
}
aux=numar-i;
while (aux)
{
aux>>=1;
doilea+=aux;
}
if (ptR > primul+doilea+1) total+=2;
}
}
else
{
miu=numar>>1;
for (i=1; i<miu; i++)
{
aux=i;
primul=0;
doilea=0;
while (aux)
{
aux>>=1;
primul+=aux;
}
aux=numar-i;
while (aux)
{
aux>>=1;
doilea+=aux;
}
if (ptR > primul+doilea+1) total+=2;
}
primul=0;
aux=numar>>1;
while (aux)
{
aux>>=1;
primul+=aux;
}
if (ptR > (primul<<1)+1) total++;
}
}
void sase (long numar)
{
long i, aux, ptR=0, ptR2=0, primul, doilea, primul2, doilea2, miu;
aux=numar;
while (aux)
{
aux>>=1;
ptR+=aux;
}
aux=numar;
while (aux)
{
aux/=3;
ptR2+=aux;
}
miu=numar>>1;
if (numar & 1)
{
for (i=1; i<=miu; i++)
{
aux=i;
primul=0;
doilea=0;
primul2=0;
doilea2=0;
while (aux)
{
aux>>=1;
primul+=aux;
}
aux=i;
while (aux)
{
aux/=3;
primul2=aux;
}
aux=numar-i;
while (aux)
{
aux>>=1;
doilea+=aux;
}
aux=numar-i;
while (aux)
{
aux/=3;
doilea2+=aux;
}
if ((ptR > primul+doilea) && (ptR2 > primul2+doilea2)) total+=2;
}
}
else
{
for (i=1; i<miu; i++)
{
aux=i;
primul=0;
primul2=0;
doilea=0;
doilea2=0;
while (aux)
{
aux>>=1;
primul+=aux;
}
aux=i;
while (aux)
{
aux/=3;
primul2+=aux;
}
aux=numar-i;
while (aux)
{
aux>>=1;
doilea+=aux;
}
aux=numar-i;
while (aux)
{
aux/=3;
doilea2+=aux;
}
if ((ptR > primul+doilea) && (ptR2 > primul2+doilea2)) total+=2;
}
primul=0;
aux=numar>>1;
while (aux)
{
aux>>=1;
primul+=aux;
}
primul2=0;
aux=numar>>1;
while (aux)
{
aux/=3;
primul2+=aux;
}
if ((ptR > (primul<<1)) && (ptR2 > (primul2<<1))) total++;
}
}
int main()
{
long primu1, primu2, doilea1, doilea2, R;
int D;
ifstream fin;
fin.open ("pascal.in");
fin>>R>>D;
fin.close();
if (D == 6) sase (R);
else
{
if (D == 5) cinci (R);
else
{
if (D == 4) patru (R);
else
{
if (D == 3) trei (R);
else doi (R);
}
}
}
ofstream fout;
fout.open ("pascal.out");
fout<<total;
fout.close();
return 0;
}