#include <iostream>using namespace std;const int MAX = 1000;int length(int num){ int k = 0; while(num/10 != 0) { k++; num /= 10; } return k+1; }void Multiply(int result[], int& resultlen, int digit[], int k){ int i; int j; int len; int re[MAX]; for (i = 0; i < MAX; i++) re[i] = 0; for (i = 0; i < k; i++) for (j = 0; j < resultlen; j++) { re[i+j] += result[j] * digit[i]; re[i+j+1] += re[i+j] / 10; re[i+j] %= 10; } len = resultlen + k; if (re[len-1] == 0) len--; resultlen = len; for (i = 0; i < len; i++) result[i] = re[i];} int main(){ double r; int n; int dot; int i; int j; int k; int m; int digit[MAX]; int result[MAX]; int resultlen; bool flag = true; while (cin >> r >> n) { i = length((int)r); if (i == 1) { dot = 4; r = r * 10000; } else { dot = 3; r = r * 1000; } long int number = (long int)r; dot = dot * n; if (number == 0) { cout << "0" <<endl; continue; } for (i = 0; i < MAX; i++) { digit[i] = 0; result[i] = 0; } k = length(number); resultlen = k; for (i = 0; i < k; i++) { digit[i] = result[i] = number % 10; number /= 10; } for (i = 0; i < n-1; i++) Multiply(result, resultlen, digit, k); i = 0; while (i < dot) { if (result[i] != 0) break; i++; } if (i == dot) flag = false; else { flag = true; m = i; } if (resultlen > dot) { for (i = resultlen - 1; i >= dot; i--) cout << result[i]; if (flag) { cout << "." ; for (i = dot - 1; i >= m; i--) cout << result[i]; } } else { if (flag) { cout << "." ; for (i = dot - 1; i >= m; i--) cout << result[i]; } } cout << endl; } return 0;}