Cod sursa(job #462503)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 11 iunie 2010 11:01:31
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
#include<string.h>
#define ll long long

int dr,st,nr;
int v[1000005];
ll MOD,rest;
char s[1000005];

int main ()
{
    int i;
    ll aux;
    freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);
    gets(s);
    nr=strlen(s);
    for(i=1;i<=nr;i++)
        v[i]=s[i-1]-'0';
    v[0]=nr;
    st=1;dr=v[0];
    while(st<=dr)
    {
        aux=v[st];
        v[st]=v[dr];
        v[dr]=aux;
        st++;
        dr--;
    }
    scanf("%lld",&MOD);
    rest=0;
    for(i=v[0];i>=1;i--)
    {
        rest=rest*10+v[i];
        rest%=MOD;
    }
    if(rest)
    {
        MOD-=rest;
        for(i=1;i<=v[0] || MOD;i++)
        {
            aux=v[i]+MOD;
            v[i]=aux%10;
            MOD=aux/10;
        }
        v[0]=i-1;
    }
    for(i=v[0];i>=1;i--)
        printf("%d",v[i]);
    printf("\n");
    return 0;
}