Pagini recente » Cod sursa (job #1845536) | Cod sursa (job #2415015) | Cod sursa (job #263453) | Cod sursa (job #2092238) | Cod sursa (job #488138)
Cod sursa(job #488138)
#include <fstream>
#include <vector>
using namespace std;
const char InFile[]="multiplu.in";
const char OutFile[]="multiplu.out";
const int MaxAB=2000010;
ifstream fin(InFile);
ofstream fout(OutFile);
int A,B,rest[MaxAB],sol,back[MaxAB],ucif[MaxAB],sf;
char ris[MaxAB];
vector<int> v;
int cmmdc(int a, int b)
{
int r=a%b;
while(r)
{
a=b;
b=r;
r=a%b;
}
return b;
}
int cmmmc(int A, int B)
{
return A*B/cmmdc(A,B);
}
int main()
{
fin>>A>>B;
fin.close();
A=cmmmc(A,B);
if(1%A==0)
{
fout<<"1";
fout.close();
return 0;
}
else
{
rest[1]=1;
back[1]=0;
ucif[1]=1;
int i=1,r;
sf=1;
while(true)
{
r=(rest[i]*10)%A;
if(ris[r]==0)
{
ris[r]=1;
rest[++sf]=r;
back[sf]=i;
ucif[sf]=0;
if(rest[sf]==0)
{
sol=sf;
break;
}
}
r=(rest[i]*10+1)%A;
if(ris[r]==0)
{
ris[r]=1;
rest[++sf]=r;
back[sf]=i;
ucif[sf]=1;
if(rest[sf]==0)
{
sol=sf;
break;
}
}
++i;
}
}
while(sol)
{
v.push_back(ucif[sol]);
sol=back[sol];
}
for(register int i=(int)v.size()-1;i>=0;--i)
{
fout<<v[i];
}
fout.close();
return 0;
}