Pagini recente » Cod sursa (job #118290) | Cod sursa (job #680264) | Cod sursa (job #282727) | Cod sursa (job #294303) | Cod sursa (job #799069)
Cod sursa(job #799069)
#include<fstream>
#include<queue>
#define NMAX 2000002
using namespace std;
ifstream in("multiplu.in");
ofstream out("multiplu.out");
queue <int> q;
int cifra[NMAX],pred[NMAX];
bool viz[NMAX];
int C;
void solve(int poz)
{
int c=cifra[poz];
if(pred[poz]==0)
{
out << c;
return;
}
solve(pred[poz]);
out << c;
}
void lee()
{
if(C==1)
{
out<<'1';
return;
}
int curent,nou;
cifra[1]=1;
viz[1]=1;
q.push(1);
while(!q.empty())
{
curent = q.front();
q.pop();
if(curent == 0)
solve(0);
nou = (curent * 10) % C;
if(viz[nou]==false)
{
viz[nou] = true;
cifra[nou] = 0;
pred[nou] = curent;
q.push(nou);
}
nou += 1; nou %= C;
if(viz[nou]==false)
{
viz[nou] = true;
cifra[nou] = 1;
pred[nou] = curent;
q.push(nou);
}
}
}
int cmmmc(int a,int b)
{
int r, prod;
prod = a * b;
while(b)
{
r = a % b;
a = b;
b = r;
}
return prod / a;
}
int main()
{
int x,y;
in>>x>>y;
C=cmmmc(x,y);
lee();
return 0;
}