Cod sursa(job #2315210)

Utilizator CcosmiMoldoCosmin Moldo CcosmiMoldo Data 9 ianuarie 2019 16:41:06
Problema Next Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <cstdio>
#include <algorithm>

using namespace std;
int n[1000001];
void add(long long r)
{
    int i,t,j;
    i=1;
    while(r)
    {
        n[i]+=r%10;
        t=n[i]/10;
        r/=10;
        j=i;
        n[i]%=10;
        while(t)
        {
            n[++j]+=t;
            t=n[j]/10;
            n[j]%=10;
        }
        i++;
    }
    while(n[n[0]+1]>0)
        n[0]++;
}
long long rest(long long d)
{
    int i,cnt=0;
    long long r;
    r=0;
    for(i=n[0];i>=1;i--)
    {
        r=r*10+n[i];
        r%=d;
    }
    return r;
}

int main()
{
    freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);
    long long d;
    int i=0,st=1,dr;
    char ch;
    while(scanf("%c", &ch))
    {
        if(ch=='\n')break;
        n[++n[0]]=ch-'0';
    }
    scanf("%lld", &d);
    if(d!=1)
    {
    dr=n[0];
    while(st<dr)
    {
        swap(n[st],n[dr]);
        st++;
        dr--;
    }
    if(rest(d))
        add(d-rest(d));
    }
    for(i=n[0];i>=1;i--)
        printf("%d",n[i]);
    return 0;
}