Cod sursa(job #1790403)

Utilizator MotoAMotoi Alexandru MotoA Data 28 octombrie 2016 10:42:14
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
long long D, R;
int n = 0;
char a[1000010];
void Mod(char a[], long long D)
{
    for(int i = n; i > 0; i--)
        R = (10 * R + a[i]) % D;
}
void adun(char a[], long long R)
{
    long long t = R;
    for(int i = 1; i <= n; i++)
    {
        t += a[i];
        a[i] = t % 10;
        t /= 10;
        if(t == 0)break;
    }
    while(t > 0)
    {
        a[++n] = t % 10;
        t /= 10;
    }
}
void afisare()
{
    for(int i = n; i > 0; i--)
        g << int(a[i]);
}
void invers()
{
    int i = 1, j = n;
    while(i < j)
        swap(a[i++], a[j--]);
}
int main()
{
    char c;
    f.get(c);
    while(c != '\n')
    {
        a[++n] = c - 48;
        f.get(c);
    }
    invers();
    f >> D;
    Mod(a, D);
    R = D - R;
    if(R != D)adun(a, R);
    afisare();
}