Pagini recente » Istoria paginii runda/oji201811/clasament | Istoria paginii runda/corigenta | Cod sursa (job #241016) | Cod sursa (job #3187719) | Cod sursa (job #799210)
Cod sursa(job #799210)
#include<fstream>
#include<queue>
#include<vector>
using namespace std;
int A,B,cmmmc;
int pred[2000100],cif[2000100];
bool viz[2000100];
queue <int> Q;
vector <int> sol;
int main()
{
ifstream fin("multiplu.in");
fin>>A>>B;
fin.close();
int i,r,x;
cmmmc=A*B;
while(B)
{
r=A%B;
A=B;
B=r;
}
cmmmc/=A;
viz[1]=true;
cif[1]=1;
Q.push(1);
while(!Q.empty() && !viz[0])
{
x=Q.front();
Q.pop();
r=(x*10)%cmmmc;
if(!viz[r])
{
viz[r]=true;
cif[r]=0;
pred[r]=x;
Q.push(r);
}
r=(x*10+1)%cmmmc;
if(!viz[r])
{
viz[r]=true;
cif[r]=1;
pred[r]=x;
Q.push(r);
}
}
ofstream fout("multiplu.out");
r=0;
sol.push_back(cif[r]);
r=pred[r];
while(r)
{
sol.push_back(cif[r]);
r=pred[r];
}
for(i=sol.size()-1;i>=0;i--)
fout<<sol[i];
fout<<"\n";
fout.close();
return 0;
}