Pagini recente » Cod sursa (job #1384374) | Cod sursa (job #2798936) | Cod sursa (job #1057628) | Cod sursa (job #2612141) | Cod sursa (job #3163047)
#include <fstream>
#include <queue>
using namespace std;
ifstream cin ("multiplu.in");
ofstream cout ("multiplu.out");
char numar[2000001];
int sursa[2000001];
int Cmmdc (const int valoare_1 , const int valoare_2)
{
return valoare_2 ? Cmmdc(valoare_2 , valoare_1 % valoare_2) : valoare_1;
}
int main ()
{
int valoare_1 , valoare_2;
cin >> valoare_1 >> valoare_2;
queue <int> optiuni; optiuni.push(1); sursa[1] = -1;
int divizor = valoare_1 / Cmmdc(valoare_1 , valoare_2) * valoare_2;
while (!sursa[0])
{
const int rest_actual = optiuni.front();
for (int valoare = 0 ; valoare < 2 ; valoare++) {
if (!sursa[(rest_actual * 10 + valoare) % divizor]) {
sursa[(rest_actual * 10 + valoare) % divizor] = rest_actual;
optiuni.push((rest_actual * 10 + valoare) % divizor);
}
}
optiuni.pop();
}
int lungime = 0;
for (int rest_actual = 0 ; rest_actual != -1 ; rest_actual = sursa[rest_actual])
{ numar[lungime++] = (sursa[rest_actual] * 10 % divizor == rest_actual ? '0' : '1'); }
for (int stanga = 0 , dreapta = lungime - 1 ; stanga < dreapta ; stanga++ , dreapta--)
{ swap(numar[stanga] , numar[dreapta]); }
cout.write(numar , lungime);
cout.close(); cin.close();
return 0;
}