#include<iostream>
#include<stdlib.h>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
	int p,q;
	div_t d;
	vector<int> vRem,vQuot;
	vector<int>::iterator remIte,ite;
	string remStr;
	while(cin >> p >> q)
	{
		vRem.clear();
		vQuot.clear();
		remStr = "";
		for(;;)
		{
			d = div(p*10, q);
			p = d.rem;

			vQuot.push_back(d.quot);
			if(d.rem == 0)	//èØêÜµ½
			{
				break;
			}
			// ÜèªzÂµnßÜµ½
			else if( (remIte=find(vRem.begin(),vRem.end(), d.rem)) != vRem.end() )
			{
				if( *(vQuot.begin()+(remIte-vRem.begin())) == vQuot.back() )
				{
					vQuot.pop_back();
				}
				else
				{
					vRem.push_back(d.rem);
					remIte=find(vRem.begin(),vRem.end(), d.rem)+1;
				}

				//zÂ·éÌoÍ
				for(ite=vRem.begin(); ite < remIte; ++ite)
					remStr += ' ';
				for(; remIte != vRem.end(); ++remIte)
					remStr += '^';
				break;
			}
			vRem.push_back(d.rem);
		}
		for(ite = vQuot.begin(); ite != vQuot.end(); ++ite)
			cout << *ite;
		cout << endl;
		if(!remStr.empty())
			cout << remStr << endl;
	}
	return 0;
}