Cod sursa(job #2941979)

Utilizator Hutanu_MaiaHutanu Ioana-Maia Hutanu_Maia Data 18 noiembrie 2022 17:14:35
Problema Next Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("next.in");
ofstream fout("next.out");
string s;
long long int v[10011],i,n,d,rest,res[10011],nr,rez[10011],n_rez,rezu[10011],n_rezu,diz[10011],n_diz;
int main()
{
    getline(fin,s);
    n=s.size();
    fin>>d;
    for(i=n-1; i>=0; i--)
        v[i]=s[n-i-1]-'0';
    for(i=n-1; i>=0; i--)
    {
        rest=rest*10+v[i];
        while(d<=rest)
            rest=rest-d;
    }
    if(rest)
    {
        while(rest!=0)
        {
            res[nr]=rest%10;
            rest=rest/10;
            nr++;
        }
        int t=0;
        n_rez=n;
        for(i=0; i<n_rez; i++)
        {
            rez[i]=v[i]-res[i]+t;
            t=0;
            if(rez[i]<0)
            {
                rez[i]=rez[i]+10;
                t=-1;
            }
        }
        while(rez[n_rez-1]==0 && n_rez>=2)
            n_rez--;
        while(d!=0)
        {
            diz[n_diz]=d%10;
            d=d/10;
            n_diz++;
        }
        n_diz--;
        int suma=0;
        t=0;
        n_rezu=max(n_rez,n_diz);
        for(i=0; i<n_rezu; i++)
        {
            suma=rez[i]+diz[i]+t;
            rezu[i]=suma%10;
            t=suma/10;
        }
        if(t)
            rezu[n_rezu++]=t;
        for(i=0; i<n_rezu; i++)
            fout<<rezu[i];
    }
    else
        fout<<s;
    return 0;
}