Cod sursa(job #2673158)

Utilizator NeacsuMihaiNeacsu Mihai NeacsuMihai Data 16 noiembrie 2020 02:19:02
Problema Next Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

ifstream fin ("next.in");
ofstream fout ("next.out");
typedef int Huge[1000001];
Huge n;
char s[1000001];
void citire()
{
    int i, str;
    fin.getline(s, 1000001);
    str=strlen(s);
    n[0]=str;
    for(i=str-1; i>=0; i--)
    {
        n[str-i]=s[i]-'0';
    }
}
long long mod (Huge a, long long x)
{
    int i;
    long long r=0;
    for(i=a[0]; i>=1; i--)
    {
        r=r*10+a[i];
        r=r%x;
    }

    return r;
}
void adunare(Huge a, int x)
{
    int i, r=0;
    for(i=1; i<=a[0]; i++)
    {
        a[i]=a[i]+x%10+r;
        r=a[i]/10;
        a[i]=a[i]%10;

        x=x/10;
    }
    if(r) a[++a[0]]=1;
}
void afisare(Huge a)
{
    for(int i=a[0]; i>=1; i--) fout<<a[i];
    fout<<"\n";
}
int main()
{
    long long d, rest;
    citire(); fin>>d;
    rest=mod(n, d);
    if(rest!=0)adunare(n, d-rest);
    afisare(n);
}