Cod sursa(job #257965)

Utilizator SheepBOYFelix Liviu SheepBOY Data 14 februarie 2009 14:14:22
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<stdio.h>      
#include<memory.h>   
char vf[100000];      
void vrg(int a,int b)      
{      
    memset(vf,-1,sizeof(vf));    
    short int  result[100000];      
    int  aux,stop=0,i,nr=0,s=-1,f=-1;      
    vf[a]=0;    
    while(a&&!stop)      
    {      
        a*=10;      
        result[nr++]=a/b;      
        aux=a%b;      
        if(aux==(a/10))      
            {s=nr-1;f=nr-1;break;}      
        if(vf[aux]>=0)      
            stop=1;      
        else      
            vf[aux]=nr;      
        a%=b;      
    }      
    if(stop)      
    {      
        s=vf[aux];      
        f=nr-1;      
    }      
    for(i=0;i<nr;++i)      
    {      
        if(s==i)      
            printf("(");      
        printf("%d",result[i]);      
        if(f==i)      
            printf(")");      
    }      
}      
int main()      
{      
    int m,n;    
    int r,c;      
    freopen("impartire.in","r",stdin);      
    freopen("impartire.out","w",stdout);      
    scanf("%d%d",&m,&n);      
    c=m/n;      
    r=m%n;      
    printf("%d",c);      
    if(r)      
    {      
        printf(".");      
        vrg(r,n);      
    }      
    return 0;      
}