Cod sursa(job #1711171)

Utilizator andreicoman299Coman Andrei andreicoman299 Data 30 mai 2016 19:01:17
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
#include <stdlib.h>

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

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

int v[1000000+5];
int main(){
    FILE*fi,*fo;
    fi=fopen("next.in","r");
    fo=fopen("next.out","w");
    v[0]=0;
    char c=fgetc(fi);
    while(c!='\n'){
        v[++v[0]]=c-'0';
        c=fgetc(fi);
    }
    for(int i=1;i*2<=v[0];i++){
        int aux=v[i];
        v[i]=v[v[0]-i+1];
        v[v[0]-i+1]=aux;
    }

    long long d;
    fscanf(fi,"%lld", &d);
    mod(v, d);
    add(v, (d-mod(v, d))%d);
    for(int i=v[0];i>0;i--)
        fprintf(fo,"%d", v[i]);
    fclose(fi);
    fclose(fo);
    return 0;
}