Cod sursa(job #1788635)

Utilizator andreistanStan Andrei andreistan Data 26 octombrie 2016 11:14:55
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

const int CMAX=1000002;

ifstream f("next.in");
ofstream g("next.out");
char N[CMAX];
int A[CMAX];
long long D;

void copiere(int A[], char N[], int lg)
{
    A[0]=lg;
    int i=1,j=lg-1;
    for(;j>=0;)
        A[i++]=N[j--]-48;
}

long long mod(int A[], long long B)
{
      int i;
      long long t = 0;
      for (i = A[0]; i > 0; i--)
              t = (t * 10 + A[i]) % B;
      return t;
}

void add(int A[], long long r)
{
    long long t=r;
    for(int i=1;i<=A[0];i++)
    {
        t+=A[i];
        A[i]=t%10;
        t/=10;
    }
    while(t>0)
    {
        A[0]++;
        A[A[0]]=t%10;
        t/=10;
    }
}

int main()
{

    f.getline(N,CMAX);
    copiere(A, N, strlen(N));
    f>>D;
    long long rest=mod(A,D);
    if(rest>0)
        add(A,D-rest);
    for(int i=A[0];i>=1;i--)
        g<<A[i];
    return 0;
}