Pagini recente » Cod sursa (job #1558412) | Cod sursa (job #1722462) | Cod sursa (job #1558986) | Cod sursa (job #2919784) | Cod sursa (job #1324598)
#include <iostream>
#include <fstream>
#include <queue>
#define p push
#define VM 2000000
#include <algorithm>
using namespace std;
queue<int> c;
int lgmin[VM];
int pre[VM];
int uc[VM];
int cmmdc(int a, int b){
while (b != 0){
int aux = a % b;
a = b;
b = aux;
}
return a;
}
int cmmmc(int a, int b){
return (a * b) / cmmdc(a , b);
}
int main()
{
ifstream f("multiplu.in");
ofstream g("multiplu.out");
int a, b;
f>>a;
f>>b;
int m = cmmmc(a , b);
c.p(1);
lgmin[1] = uc[1] = pre[1] = 1;
while(!c.empty()){
int fr = c.front();
c.pop();
int f1 = fr * 10 % m;
int f2 = (fr * 10 + 1) % m;
if(!lgmin[f1]){
c.p(f1);
lgmin[f1] = lgmin[fr] + 1;
pre[f1] = fr;
uc[f1] = 0;
if(f1 == 0){
break;
}
}
if(!lgmin[f2]){
c.p(f2);
lgmin[f2] = lgmin[fr] + 1;
pre[f2] = fr;
uc[f2] = 1;
if(f2 == 0){
break;
}
}
}
string s;
for(int i = 0 ; pre[i] != i ; i = pre[i]){
s += (uc[i] + '0');
}
s += (uc[1] + '0');
reverse(s.begin() , s.end());
g<<s;
return 0;
}