Cod sursa(job #994902)

Utilizator ludacrivasilii teodorovici ludacri Data 6 septembrie 2013 16:26:22
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
#include<cstring>
#include<algorithm>
 
#define NMAX 1000005
 
using namespace std;
 
short v[NMAX];
char x[NMAX];
long long d,m,L;
 
void read()
{
    ifstream fin("next.in");
    fin>>x>>d;
    L=strlen(x);
    for(int i=1;i<=L;i++)
        v[i]=(short)(x[i-1]-'0');
}
 
void mod()
{
    for(int i=1;i<=L;i++)
    {
        m=m*10+v[i];
        if(m>=d)
            m%=d;
    }
    if(m)
        m=d-m;
}
 
void add()
{
    reverse(v+1,v+L+1);
    for(int i=1;m;i++,m/=10)
    {
        if(i>L)
            L++;
        v[i]+=m%10;
    }
    for(int i=1;i<=L || v[i];i++)
    {
        if(i>L)
            L++;
        if(v[i]>9)
        {
            v[i]%=10;
            v[i+1]++;
        }
    }
}
 
void print()
{
    ofstream fout("next.out");
    for(int i=L;i;i--)
        fout<<v[i];
}
 
int main()
{
    read();
    mod();
    add();
    print();
    return 0;
}