#include <stdio.h>
#include <string.h>
#define MAX 200
void mul(int ans[], int a[], int len2)
{
int b[MAX],len1;
memset (b,0,sizeof(b));
for (len1=MAX-1; len1>=0; len1--)
if (ans[len1]!=0) break;
len1++;
for (int i=0; i!=len1; i++)
for (int j=0; j!=len2; j++)
b[i+j]+=ans[i]*a[j];
for (int i=0; i!=MAX; i++)
if (b[i]>9)
{
b[i+1]+=b[i]/10;
b[i]%=10;
}
for (int i=0; i!=MAX; i++) ans[i]=b[i];
}
int main()
{
char str[7]; int n;
while (scanf("%s%d",str,&n)!=EOF)
{
int wei,len=strlen(str),i=0,a[MAX],ans[MAX];
memset(a,0,sizeof(a)); memset(ans,0,sizeof(ans));
while (str[i]!='.') i++;
wei=n*(len-i-1);
for(int j=0,i=len-1; i>=0; i--)
if (str[i]!='.')
{ a[j]=str[i]-'0'; j++; }
for (int i=0; i!=MAX; i++) ans[i]=a[i];
for (int i=1; i!=n; i++)
mul(ans,a,len-1);
for (len=MAX-1; len>=0; len--)
if (ans[len]!=0) break;
int en=0;
while (ans[en]==0) en++;
for (int i=len; i>=wei; i--)
printf("%c",ans[i]+'0');
if (wei>0 && en<wei) printf(".");
for (int i=wei-1; i>=en; i--)
printf("%c",ans[i]+'0');
printf("\n");
}
return 0;
}
1001 Exponentiation
最新推荐文章于 2021-05-25 19:49:44 发布