Cod sursa(job #992222)

Utilizator sebinechitasebi nechita sebinechita Data 1 septembrie 2013 14:55:32
Problema Next Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <climits>
#include <algorithm>
#include <cmath>
using namespace std;

ifstream fin ("next.in");
ofstream fout("next.out");
#define baza 10
#define MAX 1000010
long long int i,k,kl,d;


long long int a[MAX];


void fshow(long long  int *al)
{
    for(i=al[0];i>=1;i--)
    {
        fout<<al[i];
    }
}

long long int mod(long long int* al,long long int d)
{
    long long int p=0;
    for(i=al[0];i>=1;i--)
    {


        long long int xi=al[i]+p;
        p=xi%d;
p*=baza;
    }
    p/=baza;
    return p;
}

void add(long long int* cl, long long int d)
{

    a[1]+=d;
    for(kl=1;kl<=cl[0];kl++)
    {
        cl[kl+1]+=(cl[kl]/baza);

        cl[kl]%=baza;

    }

    if(cl[cl[0]+1])
        cl[0]++;


}
void citire()
{
    char n[MAX];
    fin>>n;
    a[0]=strlen(n);
    for(i=1;i<=a[0];i++)
    {
        a[i]=n[a[0]-i]-'0';
    }
    fin>>d;
}

int main()
{

    citire();
    long long int p=mod(a,d);
    if(p)
    {
        add(a,d-p);
    }
        fshow(a);
    return 0;
}