Cod sursa(job #330003)

Utilizator freak93Adrian Budau freak93 Data 8 iulie 2009 13:48:13
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<cstdio>
#include<cstring>
#define maxn 1004005

using namespace std;
char x[maxn];

int i,j,n,a[maxn],d,b[maxn];

int mod(int A[], int B)
{
      long long i, t = 0;
      for (i = A[0]; i > 0; i--)
              t = (t * 10 + A[i]) % B;
      return t;
}

void add(int A[], int B[])
{
      long long i, t = 0;
      for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
              A[i] = (t += A[i] + B[i]) % 10;
      A[0] = i - 1;
}

int main()
{
    freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);
    fread(x,1,sizeof(x),stdin);
    i=strlen(x)-1;
    j=1;
    while(x[i]<'0'||x[i]>'9') --i;
    while(x[i]>='0'&&x[i]<='9')
        d=d+j*(x[i]-'0'),j*=10,--i;
    while(x[i]<'0'||x[i]>'9')
        --i;
    for(;i>=0;--i)
        a[++a[0]]=x[i]-'0';

    if(i=mod(a,d))
    {
        d=d-i;
        while(d)
            b[++b[0]]=d%10,d/=10;
        add(a,b);
    }

    for(i=a[0];i;--i)
        printf("%d",a[i]);

    printf("\n");

    fclose(stdin);
    fclose(stdout);

    return 0;
}