细节细节细节,我是个粗心大意的人,所以做题这么慢,本该早就做完的。。。。。
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
#define maxn 1000
using namespace std;
string s;
long long map[6],ans[maxn],sum[maxn];
void input()
{
while(getline(cin,s))
{
int f;
memset(map,0,sizeof(map));
memset(ans,0,sizeof(ans));
ans[0]=1;
for(int i=5,j=0;i>=0;i--)
{
if(s[i]!='.')map[j++]=s[i]-'0';
else f=5-i;
}
long long t=0;
if(s[7]!=' ')t+=(s[7]-'0')*10;
t+=s[8]-'0';
for(int i=0;i<t;i++)
{
memset(sum,0,sizeof(sum));
for(int j=0;j<5;j++)
{
for(int k=0;k<maxn;k++)
{
sum[j+k]+=map[j]*ans[k];
}
}
for(int j=0;j<maxn-1;j++)
{
sum[j+1]+=sum[j]/10;
sum[j]%=10;
}
memset(ans,0,sizeof(ans));
for(int j=0;j<maxn-1;j++)
{
ans[j]=sum[j];
}
}
int i,j;
for(i=maxn-1;i>=0;i--)
{
if(ans[i]!=0)break;
}
if(i==-1)cout<<"0"<<endl;
else
{
for( j=0;j<maxn;j++)
{
if(ans[j]!=0)break;
}
f*=t;
if(i>=f)
{
for(int p=i;p>=f;p--)cout<<ans[p];cout<<".";
for(int p=f-1;p>=j;p--)cout<<ans[p];cout<<endl;
}
else
{
cout<<".";
for(int p=f-1;p>i;p--)cout<<"0";
for(int p=i;p>=j;p--)cout<<ans[p];cout<<endl;
}
}
}
}
int main()
{
input();
return 0;
}