Cod sursa(job #38416)

Utilizator cos_minBondane Cosmin cos_min Data 25 martie 2007 19:31:04
Problema Next Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <stdio.h>
#include <string>
using namespace std;

#define in "next.in"
#define out "next.out"
#define dim 1000001

int size, nr[23];
int A[dim];
long long d;
char c[dim];

int main()
{
    FILE *fin = fopen(in,"r");
    freopen(out,"w",stdout);
    
    fgets(c,dim,fin);
    fscanf(fin,"%lld", &d);
    
    size = strlen(c)-2;
    int i;
    for (i = 0; i <= size; i++ )  
        A[size-i+1] = (int)c[i]-48;
        
    A[0] = size+1;
    
    long long t = 0;
      
    for (i = A[0]; i >= 1; i-- )  
    {
        t = (t * 10 + A[i] ) % d; 
    } 
    
    if ( t == 0 )
    {
         for ( i = 0, printf("%c",c[i]); i < size; i++ , printf("%c",c[i])) ;
    }
    else
    {
        nr[0] = 0;
        
        t = d-t;
        int i;
        
        while ( t ) { nr[0]++, nr[nr[0]] = t % 10, t /= 10; };
        
        t = 0;  
        for (i=1; i<=A[0] || i<=nr[0] || t; i++, t/=10)  
               A[i] = (t += A[i] + nr[i]) % 10;  
        A[0] = i - 1;  
    
        for ( int i = A[0]; i >= 1; i-- )
            printf("%d", A[i]);
        
    }
}