Pagini recente » Cod sursa (job #2646329) | Cod sursa (job #2242588) | Cod sursa (job #1164297) | Cod sursa (job #2692072) | Cod sursa (job #1347474)
#include<stdio.h>
#define MAXAB 2000005
FILE *f=fopen("multiplu.in","r"), *g=fopen("multiplu.out","w");
long int A, B, LQ, LR;
bool ExistaRestul[MAXAB], R[MAXAB];
struct Coada{
long int rest, vinedin;
bool cifra;
} Q[MAXAB];
long int cmmmc( long int a, long int b ){
long int r=a%b, aa=a, bb=b;
while( r>0 ){ a=b;b=r;r=a%b; }
return (aa*bb)/b;
}
void Rezolva( long int C ){
long int k1, k2, restnou, k;
if(C==1){fprintf(g,"1\n");return;}
Q[1].cifra = 1; Q[1].rest = 1; Q[1].vinedin = 0;
ExistaRestul[1]=1;
k1=1; k2=1;
while( k1 <= k2 ){
restnou = (Q[k1].rest * 10) % C;
if( ExistaRestul[restnou] == 0 ){
k2++;
Q[k2].cifra = 0; Q[k2].rest = restnou; Q[k2].vinedin = k1;
ExistaRestul[restnou] = 1;
if( restnou == 0 ) break;
}
restnou = (Q[k1].rest * 10 + 1) % C;
if( ExistaRestul[restnou] == 0 ){
k2++;
Q[k2].cifra = 1; Q[k2].rest = restnou; Q[k2].vinedin = k1;
ExistaRestul[restnou] = 1;
if( restnou == 0 ) break;
}
k1++;
}
LR = 0; k = k2;
while( k != 0 ){
R[++LR] = Q[k].cifra;
k = Q[k].vinedin;
}
for(long int i=LR;i>=1;i--) fprintf(g,"%ld",R[i]); fprintf(g,"\n");
}
int main(){
fscanf(f,"%ld %ld\n",&A,&B);
Rezolva( cmmmc(A,B) );
return 0;
}