Cod sursa(job #41074)

Utilizator mariusdrgdragus marius mariusdrg Data 27 martie 2007 22:25:38
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>
#include<string.h>

const int maxn = 1000010;

typedef int lnum[maxn];

void ad(lnum &dest,lnum &a, lnum &b)
{
        int i;
        int t;
        for(i = 1;i <= a[0] || i <= b[0] || t;++i)
        {
                t += a[i] + b[i];
                dest[i] = t % 10;
                t /= 10;
        }
}

char a1[maxn];
long long i;
long long n;
long long nr;
lnum b;
lnum a;

int main()
{
        freopen("next.in","r",stdin);
        freopen("next.out","w",stdout);
        fgets(a1 + 1,1000020,stdin);
        n = strlen(a1 + 1)  - 1;
        for(i = 1;i <= n; ++i)
        {
                a[n- i + 1] = a1[i] - '0';
        }
        a[0] = n;
        scanf("%lld",&n);
        for(i = 1;i <= a[0]; ++i)
        {
                nr *= 10;
                nr += a[i];
                nr %= n;
        }
        while(nr)
        {
                b[0]++;
                b[b[0]] = nr % 10;
                nr /= 10;
        }
        ad(a,a,b);
        for(i = a[0];i > 0; --i)
        {
                printf("%d",a[i]);
        }
        printf("\n");
        return 0;
}