#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char a[150]={0};
int n;
while(scanf("%s%d",a,&n)!=EOF)
{ int b[150]={0},i,j,lend,num1,num2,num,sum=0,ten=1,suger;
lend=strlen(a)-1;
for(i=0;i<=lend;i++)
if(a[i]=='.')
break;
num1=lend-i;
for(j=i;j<lend;j++)
a[j]=a[j+1];
lend=lend-1;
for(j=lend;j>=i;j--)
{ if(a[j]!='0')
break;
}
num2=lend-j;
lend=j;
num=(int)fabs(num1-num2);
num=num*n;
for(i=0;i<=lend;i++)
b[i]=a[i]-48;
do
{ sum=sum+b[lend]*ten;
ten=ten*10;
lend--;
} while(lend>=0);
int temp,la,digit[1000];
la = 0,digit[0] = 1;
for(temp=1;temp<=n;temp++)
{
digit[0] = digit[0]*sum;
for(i=1;i<=la;i++)
{
digit[i] = digit[i]*sum;
digit[i] = digit[i] + digit[i-1]/10;
digit[i-1] = digit[i-1]%10;
}
while(digit[la]>=10)
{
la= la + 1;
digit[la] = digit[la-1] /10;
digit[la-1] = digit[la-1]%10;
}
}
if(b[0]==0)
{ printf(".");
for(i=num;i>la+1;i--)
printf("0");
for(i=la;i>=0;i--)
printf("%d",digit[i]);
}
else if(num!=0)
{ for(i=la;i>=num;i--)
printf("%d",digit[i]);
printf(".");
for(i=num-1;i>=0;i--)
printf("%d",digit[i]);
}
else if(num==0)
for(i=la;i>=0;i--)
printf("%d",digit[i]);
printf("\n");
}
return 0;
}
另外
对于整数
#include <iostream>
using namespace std;
int main()
{
int n,temp,la,i,digit[310],c;
while(cin>>c>>n)
{
la = 0,digit[0] = 1;
for(temp=1;temp<=n;temp++)
{
digit[0] = digit[0]*c;
for(i=1;i<=la;i++)
{
digit[i] = digit[i]*c;
digit[i] = digit[i] + digit[i-1]/10;
digit[i-1] = digit[i-1]%10;
}
while(digit[la]>=10)
{
la= la + 1;
digit[la] = digit[la-1] /10;
digit[la-1] = digit[la-1]%10;
}
}
for(i=la;i>=0;i--)
cout<<digit[i];
cout<<endl;
}
return 0;
}