Cod sursa(job #3367014)

Utilizator VladGtjGatej Vlad VladGtj Data 5 octombrie 2026 18:24:20
Problema Next Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <iostream>
#include <fstream>
using namespace std;
char a[100000001];
char b[100000001];
ifstream fin("next.in");
ofstream fout("next.out");
void impartire(char v1[],char v2[],long long divizor,int na,int &nb){
    long long nrimpartire=0;
    int v2Index=1;
    for(int i=1;i<=na;i++){
        nrimpartire=nrimpartire*10+(v1[i]-'0');
        if(nrimpartire/divizor!=0){
            v2[v2Index]=nrimpartire/divizor+'0';
            nrimpartire=nrimpartire%divizor;
            v2Index++;
            nb++;
        }
        else if(v2Index!=1){
            v2[v2Index]='0';
            v2Index++;
            nb++;
        }
    }
}
void inmultire(char a[],int& na,long long b) {
  long long t, i;
  t=0;
  i=1;
  while (i<=na||t>0) {
    if(a[i]!=0){
        t+=b*(a[i]-48);
    }
    a[i]=t%10+48;
    t/=10;
    i++;
  }

  if (i-1 > na)
    na = i-1;
}
int main()
{

    string number;
    int nrcif=1,na=0,nb=0;
    long long divizor;
    fin>>number;
    fin>>divizor;
    for(char ch : number){
        a[nrcif]=ch;
        nrcif++;
    }
    nrcif--;
    impartire(a,b,divizor,nrcif,nb);
    if(b[nb]!='9'){
        b[nb]++;
    }else{
        for(int i=nb;b[i]=='9';i--){
            b[i]='0';
            if(b[i-1]!='0'){
                b[i-1]++;
            }
        }
    }
    cout<<endl;

    for(int i=1;i<=nb/2;i++){
        swap(b[i],b[nb-i+1]);
    }
    inmultire(b,nb,divizor);
    for(int i=nb;i>=1;i--){
        fout<<b[i];
    }
    return 0;
}