Pagini recente » Cod sursa (job #681781) | Cod sursa (job #1256782) | Cod sursa (job #548070) | Cod sursa (job #1910601) | Cod sursa (job #3252426)
#include<iostream>
#include<vector>
#include<fstream>
#include<climits>
#include<queue>
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
int a,b,cmmc,nr,p,len;
int pre[2000001];
queue<int> q;
int cmmmc(int a, int b){
int x = a*b;
int r = a % b;
while(r != 0){
a = b;
b = r;
r = a % b;
}
return x/b;
}
void recon(){
}
void multiplu(){
int x = q.front();
q.pop();
while(x%cmmc != 0){
int y = (10*x)%cmmc ,z = (10*x+1)%cmmc;
if(y != x && pre[y] == 0){
pre[y] = x;
q.push(y);
}
if(z != x && pre[z] == 0){
pre[z] = x;
q.push(z);
}
x = q.front();
q.pop();
}
p = 1;
nr = 0;
pre[cmmc] = pre[x];
x = cmmc;
while(x != -1){
while((x - 10*pre[x])%cmmc == 0 && x != -1){
p *= 10;
x = pre[x];
}
nr += p;
p*= 10;
x = pre[x];
}
}
int main(){
fin>>a>>b;
cmmc = cmmmc(a,b);
if(cmmc == 1)fout<<1;
else{
q.push(1 % cmmc);
pre[1 % cmmc] = -1;
multiplu();
fout<<nr;
}
}