#define _CRT_SECURE_NO_WARNINGS
#include"bits/stdc++.h"
#ifdef _DEBUG
#define DBG(n) n
#else
#define DBG(n)
#endif
#define INF         1e9
#define INFLL       1e18
#define EPS         1e-9
#define REP(i,n)    for(ll i=0,i##_len=(n);i<i##_len;++i)
#define REP1(i,n)   for(ll i=1,i##_len=(n);i<=i##_len;++i)
#define REPR(i,n)   for(ll i=(n)-1;i>=0;--i)
#define REPR1(i,n)  for(ll i=(n);i>0;--i)
#define REPC(i,obj) for(auto i:obj)
#define ALL(obj)    (obj).begin(),(obj).end()
#define SETP(n)     cout<<fixed<<setprecision(n)
using namespace std;
using ll = long long;
template<typename T = ll>inline T in() { T ret; cin >> ret; return ret; }

signed main()
{
	int p, q;
	while (scanf("%d %d", &p, &q) != EOF) {
		map<ll, ll>idx;
		idx[p] = 0;
		ll a = p * 10;
		ll dev = a / q;
		cout << dev;
		ll len = 1;
		ll b = dev * q;
		ll caret;
		bool devidable = true;
		while (true) {
			a = a - b;
			if (a == 0) {
				break;
			}if (idx.count(a) == 1) {
				caret = len - idx[a];
				devidable = false;
				break;
			} else {
				idx[a] = len;
				a *= 10;
				dev = a / q;
				cout << dev;
				++len;
				b = dev * q;
			}
		}
		if (!devidable) {
			cout << endl;
			REP(i, len - caret) {
				cout << ' ';
			}
			REP(i, caret) {
				cout << '^';
			}
		}
		cout << endl;
	}
}
