Pagini recente » Cod sursa (job #1404674) | Cod sursa (job #933578) | Cod sursa (job #679173) | Cod sursa (job #163222) | Cod sursa (job #397211)
Cod sursa(job #397211)
#include <stdio.h>
#include <math.h>
long calcSum(int v[100000], int k)
{
int i;
long s=0;
for (i=1; i<=k; i++)
s+=v[i]*i;
return s;
}
int main()
{
long p,nr=0;
FILE *f,*g;
int k=1,ok=1,ok2=0,i,puteri[100000]={0};
f=fopen("fact.in","r");
fscanf(f,"%li",&p);
fclose(f);
if (p<5) ok=0;
while(ok)
{
puteri[1]++;
if (calcSum(puteri,k)>=p) break;
for (i=1; i<=k; i++)
{
if (puteri[i]%4==0 && puteri[i]!=4)
puteri[i+1]++;
if (puteri[i]==4)
{ k++; puteri[k]++; }
if (calcSum(puteri,k)>=p)
{ok2=1; break;}
}
if (ok2) break;
}
g=fopen("fact.out","w");
if (ok)
{
if (calcSum(puteri,k)>p)
{
nr=-1;
}
else
{
for (i=1; i<=k; i++)
{
if (puteri[i]%4>0) nr+=pow(5,i)*(puteri[i]%4);
else nr+=pow(5,i)*4;
}
}
}
else nr=1;
fprintf(g,"%li ",nr);
fclose(g);
return 0;
}