Cod sursa(job #907317)

Utilizator timicsIoana Tamas timics Data 7 martie 2013 20:29:32
Problema Next Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include<stdio.h>
#include<string.h>
long long b;
int d[17];
char a[1000000010];

long long mo()
{
    long long rez=0;
    for (int i=a[0];i>=1;--i)
        rez=(rez*10+a[i])%b;
    return rez;
}

void adun()
{
    int carry=0;
    for(int i=1;i<=a[0];++i)
    {
        int x=a[i]+d[i]+carry;
        a[i]=x%10;
        carry=x/10;
    }

    if(carry)
    {
        ++a[0];
        a[a[0]]=carry;
    }
}

void afisare()
{
    for(int i=a[0];i>=1;--i)
        printf("%d",a[i]);
}

int main()
{
    freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);
    scanf("%s",a+1);
    a[0]=strlen(a+1);
    if(a[0]%2==1)
    {
        a[a[0]/2+1]=a[a[0]/2+1]-'0';
    }
    for(int i=1;i<=a[0]/2;++i)
    {
        int x=a[i]-'0';
        a[i]=a[a[0]+1-i]-'0';
        a[a[0]+1-i]=x;
    }
    scanf("%lld",&b);

    long long c=mo();
    if(c==0)
    {
        afisare();
        return 0;
    }
    else
    {
        c=b-c;
        while(c)
        {
            ++d[0];
            d[d[0]]=(c)%10;
            c=c/10;
        }
        adun();
        afisare();
        return 0;
    }
}