Cod sursa(job #212133)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 4 octombrie 2008 14:39:48
Problema Next Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>
#include<string.h>
char x[1000005];
long a[1000005],lr1,n,i,aa;
//long long rez[1000010];
long long d;
void impart(long long x,long long lr)
{long long c=0;
 long long i;
 for(i=1;i<=lr;++i)
    if(c<x)
      {
       c=c*10+a[i];
       if(lr1)a[++lr1]=0;
      }
       else
     {
       a[++lr1]=c/x;
       c%=x;
       if(i<=lr)c=c*10+a[i];
      }
 if(c)
   {
    a[++lr1]=c/x;
    c%=x;
   }
}
void inmult(long long x)
{long long i,t=0,xx;
 for(i=1;i<=lr1;++i)
    {
     xx=a[i]*x+t;
     t=xx/10;
     xx=xx%10;
     a[i]=xx;
    }
 while(t){a[++lr1]=t%10;t/=10;}
}

int main()
{
 freopen("next.in","r",stdin);
 freopen("next.out","w",stdout);
 gets(x);
 n=strlen(x);
 for(i=1;i<=n;++i)
    a[i]=x[i-1]-'0';
 scanf("%lld",&d);
 impart(d,n);
 for(i=lr1;a[i]==9;--i)a[i]=0;
 ++a[i];
 for(i=1;i<=lr1/2;++i){aa=a[i];a[i]=a[lr1-i+1];a[lr1-i+1]=aa;}
 inmult(d);
 for(i=lr1;i;--i)printf("%ld",a[i]);
 printf("\n");
 return 0;
}