Pagini recente » Cod sursa (job #13834) | Cod sursa (job #2649313) | Cod sursa (job #1936084) | Cod sursa (job #1755647) | Cod sursa (job #251755)
Cod sursa(job #251755)
//aici sunt definitiile
#include <stdio.h>
#include <math.h>
#include <string.h>
//aici sunt functiile
void sub(int A[], int B[])
{
int i, t = 0;
for (i = 1; i <= A[0]; i++)
{
t = A[i] - B[i] + t;
if (t<0)
{
A[i]=10+t;
t=-1;
} else
A[i]=t;
}
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
void mulmic(int A[], int B)
{
int i, t = 0;
for (i = 1; i <= A[0] || t; i++, t /= 10)
A[i] = (t += A[i] * B) % 10;
A[0] = i - 1;
}
void mul(int A[], int B[])
{
int i, j, t, C[10001];
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;
}
for (i=1;i<=1001;i++)
A[i]=C[i];
}
void add(int A[], int B[])
{
int i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
void citnrhuge(int n[])
{
char c='0';
int k=0;
int a[1001];
while (scanf("%c",&c)!=EOF)
{
k++;
a[k]=c-'0';
}
int i;
for(i=k;i>=1;i--)
n[i]=a[i];
n[0]=k;
}
void afisnrhuge(int a[])
{
int i;
for (i=a[0];i>=1;i--)
printf("%d",a[i]);
}
//aici e mainu'
int main()
{
//aici e declaratia fisierelor
freopen("sarpe.in","r",stdin);
freopen("sarpe.out","w",stdout);
// int n;
int n[10001];
//aci e citirea
citnrhuge(n);
// aa=4*n + 2(n-1)(n-2); (asta-i formula)
int a[10001]={0},patru[]={1,4};
add(a,patru);
mul(a,n);
int b[10001]={0};
int c[10001];
memcpy(c,n,sizeof(c));
int unu[]={1,1};
sub(c,unu);
memcpy(b,c,sizeof(c));
memcpy(c,n,sizeof(c));
unu[1]=2;
sub(c,unu);
mul(b,c);
mul(b,unu);
add(a,b);
afisnrhuge(a);
return 0;
}