#include<iostream>
#include<vector>
#include<string>
using namespace std;
vector<int> multiply(vector<int>& A, int b)
{
vector<int> C;
int t = 0;
for (int i = 0; i < A.size() || t; i++)
{
if (i < A.size()) t += A[i] * b;
C.push_back(t % 10);
t /= 10;
}
while (C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
int countDecimalPlaces(double num)
{
string numStr = to_string(num);
size_t dotPosition = numStr.find('.');
if (dotPosition != string::npos)
{
return numStr.size() - dotPosition - 1;
}
else
{
return 0;
}
}
int main() {
double a;
int b;
while (cin >> a >> b) {
int x = countDecimalPlaces(a);
for (int i = 0; i < x; i++)
{
a *= 10;
}
vector<int> A;
A.push_back(1);
for (int i = 0; i < b; i++)
{
A = multiply(A, static_cast<int>(a));
}
string d;
for (int i = A.size() - 1; i >= 0; i--)
{
d += to_string(A[i]);
}
while (d.size() < x * b)
{
d = "0" + d;
}
if (x > 0)
{
d.insert(d.size() - x * b, 1, '.');
}
else
{
d = "0." + d;
}
while (!d.empty() && d.back() == '0')
{
d.pop_back();
}
if (!d.empty() && d.back() == '.')
{
d.pop_back();
}
cout << d << endl;
}
return 0;
}