Cod sursa(job #1309164)

Utilizator BlackBird_v.1.0Stephen Berg BlackBird_v.1.0 Data 5 ianuarie 2015 14:22:36
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;
#define Nmax 1000013
long long B,i;
int A[Nmax],F[Nmax];
string s;

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

void assign(string s, int A[])
{
 A[0]=s.size();
 for (int i=0;i<A[0];++i)
     A[A[0]-i]=s[i]-'0';
}

int main(void)
{
 ifstream in("next.in");
 ofstream out("next.out");
 getline(in,s); assign(s,A);
 in>>B;
 long long modulo=(B-mod(A,B))%B;
 while(modulo)   
    {
     F[++F[0]]=modulo%10;
     modulo/=10;
	}
 add(A,F);
 for (i=A[0];i>=1;--i) out<<A[i];	
 return 0;
}