#include <stdio.h>
#include <math.h>
void power(int array[], int exponent)
{
int counter=9999,counter1=0,counter4=9999,counter5=9999,counter6=0,counter3=0,value[10000],value1[10000],expcounter=1,tmp,dot;
dot=array[0];
for(counter1=0;counter1<10000;counter1++){value[counter1]=array[counter1];}
while(expcounter<exponent)
{
for(counter1=0;counter1<10000;counter1++){value1[counter1]=0;}
counter4=9999;
counter5=9999;
counter6=0;
while(counter4>0)
{
while (counter5>0)
{
value1[counter4-counter6]+=array[counter4]*value[counter5];
counter5--;
counter6++;
}
counter4--;
counter6=0;
counter5=9999;
}
counter=9999;
while (counter>0)
{
if (value1[counter]>9) { value1[counter-1]+=value1[counter]/10; value1[counter]=value1[counter]-value1[counter]/10*10 ;}
counter--;
}
tmp=array[0]+dot;
for (counter=0;counter<10000;counter++){array[counter]=value1[counter];}
array[0]=tmp;
expcounter++;
}
for (counter=0;counter<10000;counter++){array[counter]=value1[counter];}
array[0]=tmp;
}
void multiply(int array[], int array1[], int array2[])
{
int counter=9999,counter1=0,counter4=9999,counter5=9999,counter6=0,counter3=0,value[10000],value1[10000],value2[10000],expcounter=1,tmp,dot1,dot2;
dot1=array1[0];
dot2=array2[0];
for(counter1=0;counter1<10000;counter1++){value1[counter1]=array1[counter1];}
for(counter1=0;counter1<10000;counter1++){value2[counter1]=array2[counter1];}
for(counter1=0;counter1<10000;counter1++){value[counter1]=0;}
while(counter4>0)
{
while (counter5>0)
{
value[counter4-counter6]+=array1[counter4]*array2[counter5];
counter5--;
counter6++;
}
counter4--;
counter6=0;
counter5=9999;
}
array[0]=array1[0]+array2[0];
counter=9999;
while (counter>0)
{
if (value[counter]>9) { value[counter-1]+=value[counter]/10; value[counter]=value[counter]-value[counter]/10*10 ;}
counter--;
}
for (counter=1;counter<10000;counter++){array[counter]=value[counter];}
}
void sum(int array[], int array1[], int array2[])
{
int value[10000],value1[10000],value2[10000],counter=0,counter1=0;
for(counter1=0;counter1<10000;counter1++){value1[counter1]=array1[counter1];}
for(counter1=0;counter1<10000;counter1++){value2[counter1]=array2[counter1];}
for(counter1=0;counter1<10000;counter1++){value[counter1]=0;}
if (array1[0]>array2[0])
{
for(counter=(array1[0]-array2[0]);counter<(10000-(array1[0]-array2[0]));counter++)
{
value2[counter]=array2[counter+(array1[0]-array2[0])];
}
for(;counter<10000;counter++){value2[counter]=0;}
}
if (array2[0]>array1[0])
{
for(counter=(array2[0]-array1[0]);counter<(10000-(array2[0]-array1[0]));counter++)
{
value1[counter]=array1[counter+(array1[0]-array2[0])];
}
for(;counter<10000;counter++){value1[counter]=0;}
}
counter=1;
while(counter<10000)
{
value[counter]=value1[counter]+value2[counter];
counter++;
}
counter=9999;
while(counter>0)
{
if (value[counter]>9) { value[counter-1]+=value[counter]/10; value[counter]=value[counter]-value[counter]/10*10 ;}
counter--;
}
for (counter=1;counter<10000;counter++){array[counter]=value[counter];}
if (array1[0]>array2[0]) {array[0]=array1[0];} else {array[0]=array2[0];}
}
void div1(int result[])
{
int counter=0,counter1=0,counter2=0,zero=0,value[10000];
while (zero==0) {if(!result[counter1]==0) zero=1; else counter1++;}
for (counter=0; counter<counter1; counter++)
{
for (int counter3=counter; counter3>0; counter3--)
result[0]++;
}
for (counter=1;counter<10000;counter++)
result[counter]=result[counter]*2-3;
counter=9999;
while(counter>0)
{
if (result[counter]>9) { result[counter-1]+=result[counter]/10; result[counter]=result[counter]-result[counter]/10*10 ;}
counter--;
}
result[0]=(10000-counter1)*2;
}
int main()
{
int one[10000],value[10000],value1[10000],value2[10000],counter=0,zero=0,n,x=0;;
for(counter=0;counter<9999;counter++){value[counter]=0;}
for(counter=0;counter<9999;counter++){value1[counter]=0;}
for(counter=0;counter<9999;counter++){one[counter]=0;}
one[9999]=1;
value1[9999]=2;
printf("Введите n: ");
scanf("%d",&n);
while(x<n)
{
for(counter=0;counter<9999;counter++){value1[counter]=value2[counter];}
power(value1,2);
div1(value1);
sum(value,value1,value);
x++;
for(counter=0;counter<9999;counter++){value2[counter]=value1[counter];}
}
while (zero==0) {if(!value[counter]==0) zero=1; else counter++;}
if ((1000-counter)>value[0])
{
while (counter<10000-value[0]) { printf("%d",value[counter]); counter++;}
if(counter!=10000) printf(".");
while (counter<10000) { printf("%d",value[counter]); counter++;}
}
else
{
printf("%d.",n);
int asd,fds;
for (asd=value[0]; asd<(9999-n); asd++) {printf("0");}
counter=10000-n;
while (counter<9999)
{
printf("%.0lf",fabs(value[counter]));
counter++;
}
}
}