Cod sursa(job #852521)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 11 ianuarie 2013 13:08:04
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <string>
#define DN 1005
using namespace std;

string x,dd;
unsigned long long d,rest,de_adunat;
int v[DN*DN];
int r[30];

void mod()
{
    for(int i=v[0];i;--i)
        rest=(rest*10+v[i])%d;
}

void adun()
{
    long long t=0;
    int i;
    for(i=1;i<=v[0] || i<=r[0] || t;++i)
    {
        int b=((i<=r[0])?r[i]:0);
        v[i]+=b+t;
        t=v[i]/10;
        v[i]%=10;
    }
    v[0]=max(v[0],i-1);
}


int main()
{
    int p=0;

    ifstream f("next.in");
    ofstream g("next.out");

    f>>x;
    f.get();
    f>>d;

    for(int i=x.size()-1;i>=0;--i)
        v[++p]=x[i]-'0';

    v[0]=x.size();

    mod();
    de_adunat=d-rest;

    while(de_adunat)
    {
        r[++r[0]]=de_adunat%10;
        de_adunat/=10;
    }
    if(rest)
    adun();

    for(int i=v[0];i;--i)
        g<<v[i];
    return 0;
}