Cod sursa(job #2259721)

Utilizator HoriqHoria Pacurar Horiq Data 13 octombrie 2018 17:55:02
Problema Next Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <fstream>
#include <cmath>
#include <cstring>
using namespace std;
ifstream fin("next.in");
ofstream fout("next.out");
const int NMAX=1000;
void citeste(int v[NMAX])
{
    char s[NMAX];
    fin.getline(s,NMAX);
    memset(v,0,NMAX*4);
    int i,n;
    n=strlen(s);
    for(i=n-1;i>=0;i--)
        v[++v[0]]=s[i]-'0';
}
void print(int v[])
{
    int i;
    for(i=v[0];i>=1;i--)
        fout<<v[i];
    fout<<"\n";
}
void adunare(int a[],int c[],int k)
{
    int tr,i,aux;
    memset(c,0,NMAX*4);
    c[0]=a[0];
    tr=k;
    for(i=1;i<=c[0];i++)
    {
        aux=a[i]+tr;
        c[i]=aux%10;
        tr=aux/10;
    }
}
void egal(int a[],int b[])
{
    int i;
    a[0]=b[0];
    for(i=a[0];i>=1;i--)
        a[i]=b[i];
}
void cat(int a[],int c[],int k)
{
    int r=0,i,l=1;
    int aux[NMAX];
    c[0]=a[0];
    for(i=a[0];i>=1;i--)
    {
        r=r*10+a[i];
        c[i]=r/k;
        r=r%k;
    }
    while(c[0]>1 && c[c[0]]==0)
        c[0]--;
}
void produs(int a[],int c[],int k)
{
    int i,tr,aux,j,l;
    memset(c,0,NMAX*4);
    c[0]=a[0];
    for(i=1;i<=c[0];i++)
        c[i]=a[i]*k;
    tr=0;
    for(i=1;i<=c[0];i++)
    {
        aux=c[i]+tr;
        c[i]=aux%10;
        tr=aux/10;
    }
    while(tr)
    {
        c[++c[0]]=tr%10;
        tr=tr/10;
    }

}
void edit(int a[],int c[],int k)
{
    cat(a,c,k);
    adunare(c,a,1);
    produs(a,c,k);

}
int main()
{
    int a[NMAX],aux[NMAX],c[NMAX];
    unsigned long long k;
    citeste(a);
    fin>>k;
    edit(a,c,k);
    print(c);
    return 0;
}