Cod sursa(job #2393884)

Utilizator Laza_AndreiLazarescu Andrei Vlad Laza_Andrei Data 1 aprilie 2019 10:25:03
Problema Next Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <cstdio>
#include <algorithm>

using namespace std;

const int NMAX=1000007;
int a[NMAX],b[20];

void print(int a[]){
    int i;
    for(i=a[0];i>=1;--i)
        printf("%d",a[i]);
    printf("\n");
}

long long h_rest_impartire_k(int a[],long long k){
    int i;
    long long r;
    r=0;
    for(i=a[0];i>=1;--i){
        r=r*10+a[i];
        r=r%k;
    }
    return r;
}

void h_adun(int a[],int k){
    int i,tr;
    while(k){
        b[++b[0]]=k%10;
        k/=10;
    }
    print(b);
    a[0]=max(a[0],b[0]);
    tr=0;
    for(i=1;i<=a[0];++i){
        a[i]=a[i]+b[i]+tr;
        tr=0;
        if(a[i]>=10){
            a[i]=a[i]%10;
            tr=1;
        }
    }
    if(tr){
        a[++a[0]]=1;
    }
}

int main(){
    freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);
    int d,r;
    char ch;
    while(scanf("%c",&ch)==1 && ch!='\n'){
        if(ch>='0' && ch<='9'){
            a[++a[0]]=ch-'0';
        }
    }
    reverse(a+1,a+a[0]+1);
    scanf("%d",&d);
    r=h_rest_impartire_k(a,d);
    if(r){
        h_adun(a,d-r);
    }
    print(a);
    return 0;
}