Cod sursa(job #1618444)

Utilizator razvandRazvan Dumitru razvand Data 27 februarie 2016 20:16:42
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <stdio.h>

using namespace std;

long long dim;
char cif[1000004];
char t[20];

int mod(long long a) {
    long long i,t = 0;
    for(i = dim-1; i >= 0; i--)
        t = (t*10 + cif[i])%a;
    return t;
}

void add(long long a) {
    long long t = 0;
    for(int i = 0; a > 0 || t != 0; i++) {
        if(i > dim)
            dim++;
        cif[i] += a%10+t;
        t = cif[i]/10;
        cif[i] %= 10;
        a /= 10;
    }
}

int main() {

    FILE *fin = fopen("next.in", "r");
    FILE *fout = fopen("next.out", "w");

    long long d = 0;

    char c;
    fgets(cif, 1000004, fin);
    while(isdigit(cif[dim]))
        cif[dim] = cif[dim++] - '0';
    for(int i = 0; i < dim/2; i++)
        swap(cif[i], cif[dim-i-1]);

    int k = 0;
    fgets(t, 20, fin);
    while(isdigit(t[k]))
        d = d*10 + t[k++] - '0';

    long long r = mod(d);
    add((d-r)%d);

    for(int i = dim-1; i >= 0; i--)
        fprintf(fout, "%d", (int)cif[i]);

    return 0;
}