Pagini recente » Cod sursa (job #128511) | Cod sursa (job #1134997) | Cod sursa (job #1955421) | Cod sursa (job #1644670) | Cod sursa (job #16643)
Cod sursa(job #16643)
#include <fstream.h>
long long i,a,b,nr[2];
int imp(long v[15000],long b,long nr[2],long c[100],long nc)
{
long i,j;
for (i=nr[1];i>=1;i--)
{
v[i-1]+=v[i]%b*10;
v[i]/=b;
}
c[nc]=v[0]/10;
return 0;
}
int factor(long a,long v[15000],long nr[2])
{
long i,j;
v[0]=0;
nr[1]++;
v[nr[1]]=1;
for (i=2;i<=a;i++)
{
for (j=1;j<=nr[1];j++)
v[j]*=i;
for (j=1;j<=nr[1]-1;j++)
if (v[j]>9)
{
v[j+1]+=v[j]/10;
v[j]%=10;
}
while (v[nr[1]]>9)
{
nr[1]++;
v[nr[1]]=v[nr[1]-1]/10;
v[nr[1]-1]=v[nr[1]-1]%10;
}
}
return 0;
}
int main()
{
long v[15000];
long c[100],nc;
char s;
ifstream f("fact.in");
ofstream g("fact.out");
for (i=1;i<=5;i++)
{
f>>a>>b;
if (b==2)
g<<"1"<<'\n';
else
{
nr[1]=0;
factor(a,v,nr);
nc=1;
do
{
imp(v,b,nr,c,nc);
}
while (c[nc]==0);
if (c[nc]<10)
g<<c[nc]<<'\n';
else
{
s=c[nc]-10+'A';
g<<s<<'\n';
}
}
}
f.close();
g.close();
return 0;
}