Pagini recente » Cod sursa (job #631734) | Cod sursa (job #3037012) | Cod sursa (job #1095210) | Cod sursa (job #1978018) | Cod sursa (job #115389)
Cod sursa(job #115389)
#include<stdio.h>
#include<math.h>
FILE *fin,*fout;
long a,b,p;
void citire()
{
fin=fopen("multiplu.in","r");
fscanf(fin,"%ld %ld",&a,&b);
fclose(fin);
}
int verif(long x)
{
int ok;
ok=1;
while(ok&&x>0)
{
if (x%10!=0&&x%10!=1) ok=0;
x/=10;
}
return ok;
}
int nrcf(long x)
{
int c;
c=0;
while(x>0)
{
c++;
x/=10;
}
return c;
}
double aduna(double x)
{
int v[401],n,i;
n=0;
while((int)x>0)
{
v[++n]=(int)x%10;
x/=10;
}
a=1;
for(i=1;i<=n;i++)
{
v[i]=v[i]+a;
if(v[i]==2) {a=1; v[i]=0;}
else a=0;
}
if (a==1) v[++n]=1;
x=0;
for(i=n;i>0;i--)
x=x*10+v[i];
return x;
}
void calculeaza()
{
int nrc,ok;
double nr;
if (verif(2*p)) fprintf(fout,"%ld\n",2*p);
else
{
nrc=nrcf(2*p);
ok=0;
nr=pow(10,nrc);
while(!ok)
{
if((int)nr%p==0) ok=1;
else
nr=aduna(nr);
}
fprintf(fout,"%.0lf\n",nr);
}
}
int main()
{
citire();
p=a*b;
fout=fopen("multiplu.out","w");
if (verif(p)) fprintf(fout,"%ld\n",p);
else
calculeaza();
fclose(fout);
return 0;
}