Cod sursa(job #870475)

Utilizator thewildnathNathan Wildenberg thewildnath Data 3 februarie 2013 14:42:03
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include<stdio.h>
#include<string.h>
char c[1000010],cat[10000010];

void imp(long long d,int l,char c[],char cat[],int &lcat)
{
    int i;
    long long r=0;
    for(i=l-1;i>=0;i--)
    {
        r=r*10+c[i];
        cat[i]=r/d;
        r=r%d;
    }
    while(cat[lcat-1]==0&&lcat>1)
        lcat--;
    if(r!=0)
        cat[0]++;
    i=0;
    while(cat[i]>9)
    {
        cat[i]=0;
        cat[i+1]++;
        i++;
    }
    if(i>lcat-1)
        lcat++;
}
void inm(long long d,char cat[],int &lcat)
{
    int i;
    long long r=0;
    for(i=0;i<lcat;i++)
    {
        r=r+cat[i]*d;
        cat[i]=r%10;
        r=r/10;
    }
    while(r)
    {
        cat[i]=r%10;
        r=r/10;
        i++;
    }
    lcat=i;
}
void afisare(char c[],int l)
{
    int i;
    for(i=l-1;i>=0;i--)
        printf("%d",c[i]);
    printf("\n");
}
int main()
{
    freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);
    int l,lcat,i,aux;
    long long d;
    scanf("%s",&c);
    scanf("%lld",&d);
    l=strlen(c);
    if(c[l-1]=='\n')
        l--;
    lcat=l;
    for(i=0;i<=(l-1)/2;i++)
    {
         aux=c[i];
         c[i]=c[l-1-i]-'0';
         c[l-1-i]=aux-'0';
    }
    imp(d,l,c,cat,lcat);
    inm(d,cat,lcat);
    afisare(cat,lcat);
}