Pagini recente » Cod sursa (job #3281012) | Cod sursa (job #918375) | Cod sursa (job #319906) | Cod sursa (job #1486521) | Cod sursa (job #1883200)
#include <stdio.h>
#include <stdlib.h>
#define C 31
int v[2000001],m[31],rez[31];
int rest(int ct,int nr)
{
int i,z;
i=ct;
z=0;
while(i<C && z<nr){
z=z*10+v[i];
i++;
}
z=z-z/nr*nr;
while(i<C)
{
i++;
z=z*10+v[i];
z=z-z/nr*nr;
}
return z;
}
int main()
{
int a,b,aa,bb,r,i,s,cmmmc,j;
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
scanf("%d%d",&a,&b);
aa=a;
bb=b;
while(b)
{
r=a%b;
a=b;
b=r;
}
cmmmc=(aa*bb)/a;
for(i=C-1; i>0; i--)
{
v[i]=1;
m[i]=rest(i,cmmmc);
if(m[i]==0)
m[i]=cmmmc;
v[i]=0;
}
s=0;
v[0]=1;
for(i=C-1; i>0 && !v[cmmmc]; i--)
for(j=cmmmc; j>=0 && !v[cmmmc]; j--)
if(v[j] && !v[(j+m[i]-1)%cmmmc+1])
v[(j+m[i]-1)%cmmmc+1]=v[j]+(1<<(C-1-i))-(j==0);
i=0;
s=v[cmmmc];
while(v[cmmmc])
{
i++;
rez[i]=v[cmmmc]%2;
v[cmmmc]/=2;
}
while(i)
{
printf("%d",rez[i]);
i--;
}
return 0;
}