#include <cstdio>
#include <cstring>
using namespace std;
#define eps 1e-8
#define D 150
void m(long long b[D], long long a[D])
{
long long t[D << 1];
memset(t, 0, sizeof(t));
for(int i = 0; i < D; i++)
for(int j = 0; j < D; j++)
{
t[i + j] += a[i] * b[j];
t[i + j + 1] += t[i + j] / 10;
t[i + j] %= 10;
}
for(int i = 0; i < D; i++)
{
b[i] = t[i] % 10;
t[i + 1] += t[i] / 10;
}
}
void multi(long long a[D], int n)
{
long long b[D];
memset(b, 0, sizeof(b));
b[0] = 1;
while(n)
{
if(n & 1)
m(b, a);
n >>= 1;
long long t[D];
memcpy(t, a, sizeof(t));
m(t, a);
memcpy(a, t, sizeof(t));
}
memcpy(a, b, sizeof(b));
}
int main()
{
double R;
int n;
while(scanf("%lf%d", &R, &n) == 2)
{
long long a[D];
int pos, posn = 0;
memset(a, 0, sizeof(a));
R *= (pos = 100000);
a[0] = (long long)(R + eps);
while(a[0] % 10 == 0 && pos > 1)
{
a[0] /= 10;
pos /= 10;
}
for(int i = 0; i < D - 1; i++)
{
a[i + 1] += a[i] / 10;
a[i] %= 10;
}
while(pos > 1)
{
pos /= 10;
posn++;
}
posn *= n;
multi(a, n);
pos = D - 1;
while(a[pos] == 0 && pos >= posn)
pos--;
while(pos >= 0)
{
if(pos == posn - 1)
printf(".");
printf("%lld", a[pos--]);
}
printf("\n");
}
return 0;
}