Cod sursa(job #253644)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 6 februarie 2009 09:32:24
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define NM 2000001
#define SM 2000001
long r[NM+1];
long us[NM+1];
char c[SM],si[SM];
long last[NM+1];
int main()
{
long a,b,cmmdc,cmmmc,rest,li,ls,gata,x,y,i,j,l;
char aux;
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
scanf("%ld%ld",&a,&b);
cmmmc=a*b;
rest=a%b;
while(rest){
	a=b;
	b=rest;
	rest=a%b;
	}
cmmdc=b;
cmmmc/=cmmdc;
li=1;r[1]=1;us[1]=1;last[1]=0;c[li]=49;
gata=0; ls=li;
while(!gata){
	x=r[li];
	x*=10;y=x%cmmmc;
	if(!us[y]){ ls++,r[ls]=y;us[y]=1;c[ls]=48;last[ls]=li;}
	if(!y) break;
	y++;if(y==cmmmc) y=0;
	if(!us[y]){ ls++,r[ls]=y;us[y]=1;c[ls]=49;last[ls]=li;}
	if(!y) break;
	li++;
	}
i=ls;j=0;
while(i){
	si[j++]=c[i];
	i=last[i];
	}
l=strlen(si);
for(i=0;i<l/2;++i)
	aux=si[i],si[i]=si[l-i-1],si[l-i-1]=aux;
printf("%s",si);
return 0;
}