Cod sursa(job #1687940)

Utilizator Razvan2000Razvan Jula Razvan2000 Data 13 aprilie 2016 10:03:34
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
const int NMAX=1000000;
char s[NMAX+15],b[NMAX+5];
int a[NMAX+15];
ifstream fin("next.in");
ofstream fout("next.out");
long long rest_huge_int(int a[],long long k)
{
    long long r=0;
    int i;
    r=0;
    for(i=a[0];i>=1;i--)
    {
        r=r*10+a[i];
        r=r%k;
    }
    return r;
}
void adunh(int a[],char b[])
{
    int i,tr,aux,l;
    tr=0;
    if(a[0]>b[0])
        l=a[0];
    else
        l=b[0];
    for(i=1;i<=l;i++)
    {
        aux=a[i]+b[i]+tr;
        a[i]=aux%10;
        tr=aux/10;
    }
    while(tr)
    {
        a[++a[0]]=tr%10;
        tr=tr/10;
    }
}
void printh(int x[])
{
    for(int i=x[0];i>=1;--i)
        fout<<x[i];
    fout<<"\n";
}
int main()
{
    long long d,r;
    int i,n;
    fin.getline(s,NMAX+1);
    fin>>d;
    n=strlen(s);
    a[0]=n;
    for(i=n-1;i>=0;i--)
        a[n-i]=s[i]-'0';
    r=rest_huge_int(a,d);
    if(r)
    {
        d=d-r;


        do
        {
            b[++b[0]]=d%10;
            d=d/10;
        }while(d);
        adunh(a,b);
    }
    printh(a);
    return 0;
}