Cod sursa(job #1788634)

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

const int CMAX=1000002;

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

char N[CMAX];
int lg;
long long D;

void inversare()
{
    int i,j=0;
    for(i=0;N[i]!=0;i++)
        N[i]-='0';
    lg=i;
    while(j<i)
        swap(N[j++],N[i--]);
}

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

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

int main()
{

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