Cod sursa(job #1896469)

Utilizator robx12lnLinca Robert robx12ln Data 28 februarie 2017 18:29:41
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("next.in");
ofstream fout("next.out");
long long d, r, m;
int a[1000005];
char n[1000005];
void div(){
    r = 0;
    for( int i = a[0]; i > 0; i-- ){
        r = r * 10 + a[i];
        a[i] = r / d;
        r %= d;
    }
    while( a[a[0]] == 0 && a[0] > 1 ) a[0]--;
}
void adunare(){
    int t = 0;
    a[1]++;
    t = a[1] / 10;
    a[1] %= 10;
    for( int i = 2; i <= a[0]; i++ ){
        a[i] = a[i] + t;
        t = a[i] / 10;
        a[i] = a[i] % 10;
    }
    while( t != 0 ){
        a[++a[0]] = t % 10;
        t /= 10;
    }
}
void mult(){
    int t = 0;
    for( int i = 1; i <= a[0]; i++ ){
        a[i] = a[i] * d + t;
        t = a[i] / 10;
        a[i] = a[i] % 10;
    }
    while( t != 0 ){
        a[++a[0]] = t % 10;
        t /= 10;
    }
}
int main(){
    fin >> n >> d;
    m = strlen( n );
    for( int i = 0; i < m; i++ ){
        a[i + 1] = ( n[m - i - 1] - '0' );
    }
    a[0] = m;
    div();
    if( r != 0 ){
        adunare();
    }
    mult();
    for( int i = a[0]; i >= 1; i-- ){
        fout << a[i];
    }
    return 0;
}