#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <algorithm>
using namespace std;

typedef pair<int,int> P;

void solve(int m, int n){
	// h[r] := 余り r となる計算結果が前にあったかどうか
	map<int,int> h;
	// 循環する位置
	int a=0, b=0;
	// 計算結果を入れる
	string s;
	// 循環するかどうか
	bool flag = false;
	
	// 商
	int q = m / n;
	// 余り
	int r = m % n;
	
	h[r] = 0;
	//s.push_back( (char)q+'0' );
	m = r * 10;
	
	for(int i=0 ;  ; i++ ){
		// 商
		int q = m / n;
		// 余り
		int r = m % n;
		
		// 商		
		s.push_back( (char)q+'0' );
		m = r * 10;
		
		// 割り切れたとき
		if( r == 0 ) break;
		
		// 循環するとき
		if( h.count(r) ){
			a = h[r];
			b = i;
			flag = true;
			break;
		}
		h[r] = i+1;
	}
	cout << s << endl;
	if( flag ){
		for(int i=0 ; i < s.size() ; i++ ){
			if( a <= i && i <= b ){
				cout << "^";
			}else{
				cout << " ";
			}
		}
		cout << endl;
	}
}

int main(){
	int p, q;
	while( cin >> p >> q ){
		solve( p , q );
	}
}