如前面我碰到的一样,使用的是CX大牛提供的大数模板,呵呵。
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>
const int OneNode = 1000000 ;
const int NodeLen = 6 ;
const int NumMax = 15 ;
struct BigNum
{
    unsigned num[NumMax] ;
    unsigned numlen ;
    
void set(unsigned sm=0){ num[0= sm ; numlen = 1; }
    
void set(char *string , int strlen)
    
{
        numlen 
= (strlen-1/ NodeLen + 1 ;
        memset (num , 
0 , sizeof(unsigned)*numlen );        
        
int temp , i ;
        
for( i=strlen-1 ; i>=0 ; i-- )
        
{
            temp 
= i / NodeLen ;
            num[temp] 
= num[temp]*10 + string[strlen-1-i]-'0' ;
        }

    }

    
void print()
    
{
        printf(
"%d",num[numlen-1]);
        
int i = numlen-1;
        
while( i )
        
{
            i
--;
            printf(
"%06d",num[i]);
        }

        printf(
"\n");
    }

}
;

void Mul(BigNum &a,BigNum &b,BigNum &c) 
{
    unsigned carry 
= 0 , lenmax = a.numlen+b.numlen-1 ,i,j ;
    unsigned __int64 temp ;
    c.numlen 
= lenmax;
    
for ( i=0 ; i<lenmax ; i++ )
    
{
        temp 
= carry ;
        
for ( j=0 ; j<a.numlen ; j++ )
        
{
            
if ( i<j )
                
break;
            
if ( i->= b.numlen )
            
{
                j 
= i-b.numlen ;
                
continue;
            }
            
            temp 
+= (unsigned __int64)a.num[j] * b.num[i-j] ;
        }

        carry 
= temp / OneNode ;
        c.num[i] 
= temp % OneNode ;    
    }

    
if(carry)
    
{
        c.num[i] 
= carry ; 
        c.numlen 
++;
    }

}


void Cpy(BigNum &a , BigNum &b)   
{
    a.numlen
=b.numlen;
    memcpy(a.num,b.num,sizeof(unsigned)
*b.numlen);
}


BigNum a,b,c;

int main()
{
    
int n,d,i,j,temp;
    
char str[2],ch;
    
while(1)
    
{
        scanf(
"%d%d",&n,&d);
        
if(n==0&&d==0)break;
        
        i
=0;temp=n;
        
while(temp!=0){str[i++]=temp%10+48;temp/=10;}
        
for(j=0;j<i-j-1;j++)
        
{
            ch
=str[j];
            str[j]
=str[i-j-1];
            str[i
-j-1]=ch;
        }

        a.set(str,i);

        c.set(
"1",1);
        
for(i=0;i<d;i++)
        
{
            Cpy(b,c);
            Mul(a,b,c);
        }

        c.print();

    }

    
return 0;
}