Cod sursa(job #1687885)

Utilizator iuliiaioanaiulia ioana anghel iuliiaioana Data 13 aprilie 2016 09:39:24
Problema Next Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<fstream>
#include<cstring>
#include<algorithm>
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
const int NMAX=10000;
char s[NMAX+5];
int a[NMAX+4];
long long rest(int a[],long long k)
{
    int i;
    long long r=0;
    for(i=a[0]; i>=1; i--)
    {
        r=r*10+a[i];
        r=r%k;
    }
    return r;
}
void adun(int a[],int b[])
{
    int tr,i,aux,l;
    l=max(a[0],b[0]);
    tr=0;
    a[0]=l;
    for(i=1; i<=a[0]; i++)
    {
        aux=a[i]+b[i]+tr;
        a[i]=aux%10;
        tr=aux/10;
    }
    while (tr)
    {
        a[++a[0]]=tr%10;
        tr/=10;
    }
}
void printf(int x[])
{
    for( int i=x[0]; i>=1; i--)
        g<<x[i];
    g<<endl;
}
int main()
{
    long long d,r;
    int i,n;
    memset(a,0,sizeof(a));
    f.getline(s,NMAX+1);
    f>>d;
    n=strlen(s);
    a[0]=n;
    for(i=n-1; i>=0; i--)
        a[n-i]=s[i]-'0';
    r=rest(a,d);
    if(r!=0)
    {
        d=d-r;
        int b[20];
        memset(b,0,sizeof(b));
        do
        {
            b[++b[0]]=d%10;
            d/=10;
        }
        while(d);
        adun(a,b);
    }
    printf(a);
    return 0;
}