Cod sursa(job #54889)

Utilizator varuvasiTofan Vasile varuvasi Data 25 aprilie 2007 22:11:49
Problema Next Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream.h>
#include <string.h>
//using namespace std;

short int N[1000033], R[1001], S[1000033];
long long int D;
char X[1000033];

int main()
{
    ifstream fin("next.in");
    ofstream fout("next.out");
    
    long long int rest = 0;
    int i;
    fin >> X;
    fin >> D;
    N[0] = strlen(X);
    for (i = 0; i < N[0]; i++)
        N[N[0]-i] = X[i] - '0';
    
    for (i = N[0]; i > 0; i--)
        rest = (rest * 10 + N[i]) % D;
  
    if (rest)
    {
          rest = D - rest;
          while (rest)
          {
                R[++R[0]] = rest%10;
                rest /= 10;
          }
          rest = 0;
          for (i = 1; i <= N[0] || i <= R[0] || rest; i++, rest /= 10)
              S[i] = (rest += N[i] + R[i]) % 10;
          S[0] = i - 1;
    }
    else
          memcpy(S, N, sizeof(N));
    
    for (i = S[0]; i > 0; i--)
        fout << S[i];
    fout << "\n";
    
    fin.close();
    fout.close();
    return 0;
}