Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many computer systems.
This problem requires that you write a program to compute the exact value of Rn where R is a real number ( 0.0 < R < 99.999) and n is an integer such that .
Input
The input will consist of a set of pairs of values for R and n. The R value will occupy columns 1 through 6, and the n value will be in columns 8 and 9.Output
The output will consist of one line for each line of input giving the exact value of R n. Leading zeros and insignificant trailing zeros should be suppressed in the output.Sample Input
95.123 12 0.4321 20 5.1234 15 6.7592 9 98.999 10 1.0100 12
Sample Output
548815620517731830194541.899025343415715973535967221869852721 .00000005148554641076956121994511276767154838481760200726351203835429763013462401 43992025569.928573701266488041146654993318703707511666295476720493953024 29448126.764121021618164430206909037173276672 90429072743629540498.107596019456651774561044010001 1.126825030131969720661201
#include <cstdio>
#include <cstring>
int main()
{
int c[500];
char a[10],s[10];
int n;
while (scanf("%s%d",a,&n)!=EOF)
{
memset(c,0,sizeof(c));
int k = strlen(a) - 1;
int t = 0;
int p = 0;
int n1 = n;
for (int i = 0; i <= k; i++)
if (a[i] == '.')
t = 1;
while (a[k] == '0' && t)
k--;
int m = 0, j = 0;
for (int i = 0; i <= k; i++)
{
if (a[i] != '.')
m = m*10 + a[i]-'0';
else
p = k - i;
if (a[k - i] != '.')
c[j++] = a[k - i]-'0';
}
int x = 0;
while (n!=1)
{
for (int i = 0; i <= 250||x; i++)
{
k = c[i]*m + x;
c[i] = k % 10;
x = k / 10;
}
n--;
}
int i = 250;
while (c[i]==0)
i--;
p*=n1;
if (p > i)
{
printf(".");
for(int j = 1;j < p - i; j++)
printf("0");
}
for (int j = i;j >= 0;j--)
{
printf("%d",c[j]);
if (j == p&& p)
printf(".");
}
printf("\n");
}
}