Pagini recente » Cod sursa (job #1670771) | Cod sursa (job #3177476) | Cod sursa (job #1304453) | Cod sursa (job #1741534) | Cod sursa (job #761984)
Cod sursa(job #761984)
#include<fstream>
using namespace std;
int n,D,sol;
void Rezolvare1()
{
int i,x,p=0,lim=n/2;
for(i=1;i<=lim;i++)
{
x=n-i+1;
while(x%D==0)
{
p++;
x/=D;
}
x=i;
while(x%D==0)
{
p--;
x/=D;
}
//trebuie ca D sa apara la o putere > 0
if(p>0)
{
sol+=2;
if(2*i==n)
sol--;
}
}
}
void Rezolvare2()
{
int i,x,p=0,lim=n/2;
for(i=1;i<=lim;i++)
{
x=n-i+1;
while(x%2==0)
{
p++;
x/=2;
}
x=i;
while(x%2==0)
{
p--;
x/=2;
}
//trebuie ca sa 2 sa apara la o putere > 1
if(p>1)
{
sol+=2;
if(2*i==n)
sol--;
}
}
}
void Rezolvare3()
{
int i,x,p2=0,p3=0,lim=n/2;
for(i=1;i<=lim;i++)
{
x=n-i+1;
while(x%2==0)
{
p2++;
x/=2;
}
while(x%3==0)
{
p3++;
x/=3;
}
x=i;
while(x%2==0)
{
p2--;
x/=2;
}
while(x%3==0)
{
p3--;
x/=3;
}
//trebuie ca sa 2 si 3 sa apara la o putere > 0
if(p2>0 && p3>0)
{
sol+=2;
if(2*i==n)
sol--;
}
}
}
int main()
{
ifstream fin("pascal.in");
fin>>n>>D;
fin.close();
if(D==2 || D==3 || D==5)
Rezolvare1();
if(D==4)
Rezolvare2();
if(D==6)
Rezolvare3();
ofstream fout("pascal.out");
fout<<sol<<"\n";
fout.close();
return 0;
}