Pagini recente » Cod sursa (job #2243771) | Cod sursa (job #645951) | Cod sursa (job #2680762) | Cod sursa (job #2101902) | Cod sursa (job #1740986)
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 2000003
using namespace std;
int a, b, m, q[NMAX], viz[NMAX], cif[NMAX], poz[NMAX], sf, in, i, nr;
vector <int> sol;
int cmmdc (int a, int b)
{
int c = a % b;
while (c)
{
a = b;
b = c;
c = a % b;
}
return b;
}
int main()
{
ifstream cin ("multiplu.in");
ofstream cout ("multiplu.out");
cin >> a >> b;
m = a * b / cmmdc (a, b);
in = 1;
sf = 1;
cif[1] = 1;
q[1] = 1;
poz[1] = -1;
viz[1] =1 ;
int debug = 0;
if (debug)
cout << m;
// else
while (1)
{
//debug++;
// nr = q[1];
nr = (q[in] * 10) % m;
if (viz[nr] == 0)
{
viz[nr] = 1;
sf++;
q[sf] = nr;
cif[sf] = 0;
poz[sf] = in;
}
//break;
if (q[sf] == 0)
break;
nr = (q[in] * 10 + 1) % m;
if (viz[nr] == 0)
{
viz[nr] = 1;
sf++;
q[sf] = nr;
cif[sf] = 1;
poz[sf] = in;
}
in++;
if (q[sf] == 0)
break;
// if (debug == 1000){
// cout<<"PLM";
// return 0;
// i}
}
// if( debug == 0)
int p = sf;
while (p != 1)
{
sol.push_back(cif[p]);
p = poz[p];
}
sol.push_back(1);
for (i = sol.size() - 1; i >= 0; i--)
cout << sol[i];
return 0;
}