Cod sursa(job #1142549)

Utilizator alevasluialeHuhurez Marius alevasluiale Data 13 martie 2014 22:22:39
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <cstdio>
#include <cstring>
#define base 10
#define nbase 1
using namespace std;
int A[1000005],B[1000005];
char x[1000005];
void add(int  A[], int  B[])
{
    int i, t = 0;
      for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=base)
              A[i] = (t += A[i] + B[i]) % base;
      A[0] = i - 1;
}
unsigned long long mod(int A[], unsigned long long B)
{
     int i;
     unsigned long long t=0;
      for (i = A[0]; i > 0; i--)
              t = (t * base + A[i]) % B;
      return t;
}
int main()
{   freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);
    scanf("%s",x);
    unsigned long long m=0,i,j;
    A[0]=strlen(x);
    for(i=A[0];i>=1;i--)
    {
        A[i]=x[A[0]-i]-'0';
    }
    scanf("%s",x);
    for(i=0;;i++)
    {
        m=m*10+x[i]-'0';
        if(x[i+1]=='\n'||x[i+1]==0) break;
    }

    j=mod(A,m);
    if(j!=0)
    {
        j=m-j;
    while(j!=0)
    {
        B[++B[0]]=j%10;
        j/=10;
    }
    add(A,B);

    }
    for(i=A[0];i>=1;i--)
    {
        printf("%d",A[i]);
    }


}