唉,这道题测试了好长时间才过,不过最后还是挺高兴的,呵呵。。
题目:http://poj.org/problem?id=1001
就不多说啦,直接看代码吧!!!!!
代码:
Source Code
Problem: 1001 User: 851873134
Memory: 200K Time: 0MS
Language: C Result: Accepted
Source Code
#include<stdio.h>
#include<string.h>
int an1[6];
int result[30][300];
char a[7];
int N,dnum,lenr[30];
void chen(int m)
{
int i,j;
memset(result[m],0,sizeof(result[m]));
lenr[m]=m*5;
for(i=0;i<lenr[m];i++)
for(j=0;j<6;j++)
result[m][i+j]+=result[m-1][i]*an1[j];
for(i=0;i<lenr[m];i++)
{
if(result[m][i]>=10)
{
result[m][i+1]+=result[m][i]/10;
result[m][i]%=10;
}
}
}
int main()
{
while(scanf("%s%d",a,&N)!=EOF)
{
int i,j,k,num0=0,flag=0;
dnum=0;
j=1;
k=0;
result[0][0]=1;
for(i=5;i>=0;i--)
{
if(a[i]-'.'!=0)
{
result[0][j++]=0;
an1[k++]=a[i]-'0';
}
else dnum=5-i;
}
for(i=5;i>=0;i--)
if(a[i]-'0'!=0)break;
else num0++;
for(i=1;i<=N;i++)
chen(i);
for(i=N*5;i>=0;i--)
{
if(i==num0*N-1)break;
if(i==dnum*N-1)
{
printf(".");
flag=1;
}
if(flag)
printf("%d",result[N][i]);
else if(result[N][i])
{
printf("%d",result[N][i]);
flag=1;
}
}
printf("\n");
}
}