Pagini recente » Cod sursa (job #2888661) | Cod sursa (job #34496) | Cod sursa (job #2984368) | Cod sursa (job #2205682) | Cod sursa (job #1061157)
#include <fstream>
#include <queue>
using namespace std;
const int NMAX = 2000005 ;
int A, B, M, Father[NMAX], last[NMAX];
const char infile[] = "multiplu.in" ;
const char outfile[] = "multiplu.out" ;
ifstream cin(infile) ;
ofstream cout(outfile) ;
inline int GCD(int A, int B)
{
int r;
while(A % B != 0)
{
r = A % B;
A = B;
B = r;
}
return B;
}
void Write(const int &Node) {
if(Node != 1) {
Write(Father[Node]);
}
cout << last[Node] - 1;
}
int main()
{
queue <int> Q ;
cin >> A >> B ;
M = (A * B) / GCD(A, B) ;
Q.push(1 % M) ;
last[1 % M ] = 2 ;
Father[1 % M] = 1 ;
while(!Q.empty() && last[0] == 0)
{
int actNumber = Q.front() ;
Q.pop() ;
for( int i = 0 ; i < 2 ; ++ i)
{
int newNumber = (actNumber * 10 + i) % M ;
if(!last[newNumber])
{
Father[newNumber] = actNumber;
last[newNumber] = i + 1;
Q.push(newNumber);
}
}
}
Write(0) ;
cin.close() ;
cout.close();
return 0;
}