Cod sursa(job #2146044)

Utilizator AlexandruLuchianov1Alex Luchianov AlexandruLuchianov1 Data 27 februarie 2018 19:17:49
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <queue>

using namespace std;

ifstream in ("multiplu.in");
ofstream out ("multiplu.out");

int const nmax = 2000000;
int l[5 + nmax];
int pre[5 + nmax];
queue<int> q;
int a , b;

void explore(int n){
  if(n == 1){
    out<<1;
  } else{
    explore(pre[n]);
    if((pre[n] * 10 + 1) % a == n){
      out<<1;
    } else
      out<<0;
  }
}
int main()
{
  in>>a>>b;
  int pr = a * b;
  while(0 < b){
    int temp = a;
    a = b;
    b = temp % b;
  }
  a = pr / a;
  q.push(1);
  l[1] = 1;
  while(true){
    int n = q.front();
    q.pop();
    int val = n * 10 % a;
    if(l[val] == 0){
      pre[val] = n;
      l[val] = l[n];
      if(val == 0)
        break;
      q.push(val);
    }
    val = (n * 10 + 1) % a;
    if(l[val] == 0){
      pre[val] = n;
      l[val] = l[n] + 1;
      if(val == 0)
        break;
      q.push(val);
    }
  }
  explore(0);

  return 0;
}