Cod sursa(job #41173)

Utilizator mariusdrgdragus marius mariusdrg Data 28 martie 2007 00:09:50
Problema Next Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include<stdio.h>
#include<string.h>

const int maxn = 1200022;
const int maxn2 = 40;

typedef short lnum[maxn];
typedef short lnum2[maxn2];

void ad(lnum &dest,lnum &a, lnum2 &b)
{
        short i;
        short t = 0;
        short y = 0;
        for(i = 1;i <= a[0] || i <= b[0] || t;++i)
        {
                if (i < 30) y = b[i];
                else
                {
                        y = 0;
                }
                t += a[i] + y;
                dest[i] = t % 10;
                t /= 10;
        }
        while(dest[dest[0] + 1])dest[0]++;
}

char a1[maxn];
long long i;
long long n;
long long nr;
lnum2 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 = a[0];i > 0; --i)
        {
                nr *= 10;
                nr += a[i];
                nr %= n;
        }
        nr = n - nr;
        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("%hd",a[i]);
        }
        printf("\n");
        return 0;
}