题目链接:http://poj.org/problem?id=1001
题目解析:慢慢揣摩
#include<iostream>
using namespace std;
int h[10002];
char s[10002];
int m,n,i,j,k,len,p;
int mul(int h[],int k){
int i;
for(i=0;i<=10001;i++)
h[i]*=k;
for(i=0;i<=10001;i++){
h[i+1]+=h[i]/10;
h[i]%=10;
}
return 0;
}
int main(){
while(cin>>s>>n){
m=j=0;
len=strlen(s);
memset(h,0,sizeof(h));
h[0]=1;
for(i=len-1;i>=0;i--) if(s[i]!='0')break;
len=i+1;
for(i=0;i<len;i++){
if(s[i]=='.')
p=(len-1-i)*n;
else
m=m*10+s[i]-'0';
}
for(i=0;i<n;i++) mul(h,m);
i=10001;j=0;
while(i>=0&&h[i]==0) i--;
i=max(i,p-1);
for(k=i;k>=0;k--){
if(k==p-1)
cout<<"."<<h[k];
else
cout<<h[k];
}
cout<<endl;
}
return 0;
}