Cod sursa(job #1309332)

Utilizator DjokValeriu Motroi Djok Data 5 ianuarie 2015 17:52:52
Problema Next Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>
#include<algorithm>
#include<string>
using namespace std;

int i;
short a[1000005],b[1000005];
long long d,c;
bool u;
string s;

int Rest(short *A) {
    int i;
    long long aux=0;
    for(i=A[0];i>0;--i) aux=(aux*10+A[i])%d;

    return aux;
}

void adun(short *A,short *B) {
     int i,aux=0;
     for(i=1;i<=A[0] || i<=B[0] || aux;++i,aux/=10)
     A[i]=(aux+=A[i]+B[i])%10;
     A[0]=i-1;
}

void atrib(short *A,long long x) { while(x) A[++A[0]]=x%10,x/=10; }

int main()
{
  ifstream cin("next.in");
  ofstream cout("next.out");

   getline(cin,s); cin>>d; u=(d==1) ? 1:0;

   a[0]=s.length();
   for(i=0;i<a[0];++i) a[a[0]-i]=s[i]-'0';
   
   d-=Rest(a); atrib(b,d); adun(a,b);
   if(u) cout<<s<<'\n';
   else for(i=a[0];i>=1;--i) cout<<a[i];

 return 0;
}