Pagini recente » Cod sursa (job #2755195) | Cod sursa (job #1443904) | Cod sursa (job #3133686) | Cod sursa (job #1287509) | Cod sursa (job #70458)
Cod sursa(job #70458)
#include <stdio.h>
#include <string.h>
typedef int nr_mare[10100];
nr_mare n;
void add( nr_mare &a, nr_mare b)
{
int i,t =0;
for (i=1; i<=a[0] || i <= b[0] || t > 0; i++, t/=10)
a[i] = ( t+= a[i] + b[i] ) % 10;
a[0] = i-1;
}
void scadere( nr_mare &a, nr_mare b)
{
int i,t=0;
for (i = 1; i <= a[0]; i++)
{
a[i] = a[i] - b[i] - t;
if (a[i] < 0 ) t =1; else t=0;
a[i] += t*10;
//a[i] += (t = (a[i] -= b[i] + t) < 0) * 10;
}
for (; a[0] > 1 && !a[a[0]]; a[0]--);
}
void mul(nr_mare &a, nr_mare b)
{
int i, j, t;
nr_mare c;
memset(c, 0, sizeof(c));
for (i = 1; i <= a[0]; i++)
{
for (t=0, j=1; j <= b[0] || t; j++, t/=10)
c[i+j-1]=(t+=c[i+j-1]+a[i]*b[j])%10;
if (i + j - 2 > c[0]) c[0] = i + j - 2;
}
memcpy(a, c, sizeof(c));
}
void citeste()
{
freopen("sarpe.in","r", stdin);
char str[1010];
scanf("%s",&str);
for (int i=strlen(str)-1; i >= 0; i--)
n[++n[0]] = str[i] - '0';
fclose(stdin);
}
int main ()
{
citeste();
nr_mare rez,aux,aux2,patru,doi,unu;
patru[0]=1; patru[1]=4;
doi[0] = 1; doi[1] = 2;
unu[0] = 1; unu[1] = 1;
memcpy(rez,n,sizeof(rez));
mul(rez,patru);
memcpy(aux,n,sizeof(aux));
scadere(aux,unu);
memcpy(aux2,aux,sizeof(aux));
scadere(aux2,unu);
mul(aux,aux2);
mul(aux,doi);
add(rez,aux);
freopen("sarpe.out","w", stdout);
for (int i=rez[0]; i > 0 ; i-- )
printf("%d",rez[i]);
fclose(stdout);
}