Cod sursa(job #895639)

Utilizator oprea1si2si3Oprea Sebastian oprea1si2si3 Data 27 februarie 2013 12:03:17
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <cstring>
# define nmax 10000010
using namespace std;
ifstream in ("next.in");
ofstream out("next.out");
int v[nmax],n,i,t,ok,c,j;
long long r,d;
char s[nmax];
int mod(int A[], int B)
{
      int i, t = 0;
      for (i = A[0]; i > 0; i--)
              t = (t * 10 + A[i]) % B;
      return t;
}
int main()
{
    in.getline(s,nmax);
    in>>d;
    n=strlen(s);
    v[0]=n;
    for(i=n;i>=1;i--)
        v[i]=s[n-i]-48;
    r=mod(v,d);
    if(r==0)
        out<<s<<'\n';
    else
        {
        r=d-r;
        i=1;
        while(r)
                {
                    c=r%10;
                    r=r/10;
                    v[i]+=c;
                    j=i;
                    while(v[j]>9)
                    {
                     if(j==n)
                        n++;
                    v[j+1]+=v[j]/10;
                    v[j]=v[j]%10;
                    j++;
                    }
                    i++;
                }
            for(i=n;i>=1;i--)
                out<<v[i];
        out<<'\n';
        }
    in.close();
    out.close();
    return 0;
}