import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner cin = new Scanner(System.in);
String base = null;
String radix = null;
while(cin.hasNext()) {
base = cin.next();
radix = cin.next();
StringBuffer baseBuffer = new StringBuffer();
boolean flag = false;
BigDecimal baseInt = null;
BigDecimal divider = null;
int index = base.indexOf('.');
int radixInt = Integer.valueOf(radix);
if(index >= 0 && index < 5) {
flag = true;
divider = new BigDecimal("10");
divider = divider.pow((5 - index) * radixInt);
}
int begin = 0;
while(base.charAt(begin) == '0' || base.charAt(begin) == '.')begin++;
for(int i = begin; i < base.length(); i++) {
char c = base.charAt(i);
if( c == '.') {
continue;
} else {
baseBuffer.append(c);
}
}
baseInt = new BigDecimal(baseBuffer.toString());
baseInt = baseInt.pow(radixInt);
if(flag) baseInt = baseInt.divide(divider);
String result = baseInt.toPlainString();
if(result.charAt(0)== '0'){
result = result.substring(1);
}
System.out.println(result);
}
}
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner cin = new Scanner(System.in);
String base = null;
String radix = null;
while(cin.hasNext()) {
base = cin.next();
radix = cin.next();
StringBuffer baseBuffer = new StringBuffer();
boolean flag = false;
BigDecimal baseInt = null;
BigDecimal divider = null;
int index = base.indexOf('.');
int radixInt = Integer.valueOf(radix);
if(index >= 0 && index < 5) {
flag = true;
divider = new BigDecimal("10");
divider = divider.pow((5 - index) * radixInt);
}
int begin = 0;
while(base.charAt(begin) == '0' || base.charAt(begin) == '.')begin++;
for(int i = begin; i < base.length(); i++) {
char c = base.charAt(i);
if( c == '.') {
continue;
} else {
baseBuffer.append(c);
}
}
baseInt = new BigDecimal(baseBuffer.toString());
baseInt = baseInt.pow(radixInt);
if(flag) baseInt = baseInt.divide(divider);
String result = baseInt.toPlainString();
if(result.charAt(0)== '0'){
result = result.substring(1);
}
System.out.println(result);
}
}
}
【C++版】
#include<iostream>
#include<string>
using namespace std;
#define N1 150
#define N2 300
int a1[N2],b1[N2],c1[N2+1];
void chtoint(string ch,int a[])
{
int i,j,t,dot;
for(i=2;i<N2;i++)a[i]=0;
a[1]=1;j=1;dot=0;
for(i=0;i<ch.length();i++)
{
if(ch[i]>='0'&&ch[i]<='9'){j=j+1;a[j]=ch[i]-'0';}
else if(ch[i]=='.')dot=j;
else if(ch[i]=='-')a[1]=-1;
}
if(dot==0)dot=j;
t=1;
do{t=t+1;}while(a[t]==0);
a[0]=dot-t+1;
if(t>2)
{
for(i=2;i<=j-t+2;i++)a[i]=a[i+t-2];
for(i=j-t+3;i<=j;i++)a[i]=0;
}
}
void frmt(int f[])
{
int j,fj,fj1;
for(j=N2;j>2;j--)
{
fj=f[j];
if(fj>9){
fj1=fj/10;
f[j-1]=f[j-1]+fj1;
f[j]=f[j]-(fj1*10);
}
}
//for(j=2;j<=N2;j++)cout<<f[j];
}
void multy(int d[],int e[],int f[])
{
int k,j,dj;
for(j=2;j<=N2;j++)f[j]=0;
for(j=2;j<=N1;j++){
dj=d[j];
if(dj>0){
for(k=j+1;k<=N1+j;k++)f[k]=f[k]+dj*e[k-j+1];
if(j%50==0)frmt(f);
}
frmt(f);f[1]=d[1]*e[1];f[0]=d[0]+e[0];
}
}
void print(int c[])
{
int i,j,t;
if(c[1]==-1)cout<<'-';
t=N2+1;
do{t=t-1;}while(c[t]==0);
if(c[0]>0){
j=2;
while(c[j]==0)j=j+1;
for(i=j;i<c[0]+2;i++)cout<<c[i];
if(i<=t){
cout<<'.';
for(i=c[0]+2;i<=t;i++)cout<<c[i];
}
}
else{
cout<<".";
if(c[0]<0)
for(i=2;i<0-c[0]+2;i++)cout<<'0';
for(i=0-c[0]+2;i<=t;i++)cout<<c[i];
}
}
int main()
{
string s;
int n,i,j;
while(cin>>s>>n)
{
chtoint(s,a1);chtoint(s,b1);
//multy(a1,b1,c1);
//print(c1);
//print(a1);cout<<endl;
//for(i=0;i<=N1;i++)cout<<a1[i];
if(n==1){print(a1);cout<<endl;}
else{
for(i=1;i<n;i++)
{
multy(a1,b1,c1);
//for(j=2;j<=N2;j++)cout<<c1[i];
for(j=0;j<=N1;j++)b1[j]=c1[j];
}
print(c1);
cout<<endl;
}
}
return 0;
}