Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

这题怎么会表达错误?!在UVA上通过了的,只是多一个空白行

Posted by xiaomi at 2003-06-28 01:11:31 on Problem 1140
#include<iostream.h> 
int com(int a,int b) 
{ 
    int temp; 
    while(a%b!=0) 
    { 
        temp=b; 
        b=a-a/b*b; 
        a=temp; 
    } 
    return b; 
} 
int fac2(int &a) 
{ 
    int cnt=0; 
    while(a%2==0) 
    { 
        cnt++; 
        a/=2; 
    } 
    return cnt; 
} 
int fac5(int &a) 
{ 
    int cnt=0; 
    while(a%5==0) 
    { 
        cnt++; 
        a/=5; 
    } 
    return cnt; 
} 
int hmb(int a) 
{ 
    if(a==0) 
        return 0; 
    else 
        if (1<=a&&a<10) 
            return 1; 
        else  
            if(10<=a&&a<100) 
                return 2; 
            else 
                if(100<=a&&a<1000) 
                    return 3;                 
                else 
                    if(1000<=a&&a<10000) 
                        return 4; 
                    else 
                        if(10000<=a&&a<100000) 
                            return 5; 
                        else 
                            return 6; 
} 
void main() 
{ 
    int m,n,c,c2,c5,quo[1000],rep[1000],i,j,pnt,urep,rm,cp; 
    bool dflag; 
    cin>>m>>n; 
    while(n!=0) 
    { 
        dflag=true; 
        c=com(m,n); 
        m/=c; 
        n/=c; 
        c2=fac2(n); 
        c5=fac5(n); 
        if(n==1) 
        { 
            dflag=false; 
            if(c2>=c5) 
            { 
                pnt=c2; 
                for(i=0;i<c2-c5;i++) 
                    m*=5; 
            } 
            else 
            { 
                pnt=c5; 
                for(i=0;i<c5-c2;i++) 
                    m*=2; 
            } 
            i=pnt-hmb(m); 
            cout<<"."; 
            for(j=0;j<i;j++) 
                cout<<"0"; 
            cout<<m<<endl<<"This expansion terminates."<<endl; 
        } 
        else 
            if(c2==c5) 
                pnt=c2; 
            else 
                if(c2>c5) 
                { 
                    pnt=c2; 
                    for(i=0;i<c2-c5;i++) 
                        m*=5; 
                } 
                else 
                { 
                    pnt=c5; 
                    for(i=0;i<c5-c2;i++) 
                        m*=2; 
                } 
        if(dflag) 
        { 
            urep=m/n; 
            m=m%n; 
            i=j=rm=0; 
            do 
            { 
                quo[i]=(9+10*rm)/n; 
                rm=(9+10*rm)%n; 
                i++; 
            } 
            while(rm!=0); 
            while(i>0) 
            { 
                rep[j]=(m*quo[i-1]+rm)%10; 
                rm=(m*quo[i-1]+rm)/10; 
                j++; 
                i--; 
            } 
            while(rm>0) 
            { 
                rep[j]=rm%10; 
                rm/=10; 
                j++; 
            } 
            cp=1; 
            cout<<"."; 
            for(i=0;i<pnt-hmb(urep);i++) 
            { 
                cout<<"0"; 
                cp++; 
            } 
            if(urep!=0) 
            { 
                cout<<urep; 
                cp+=hmb(urep); 
            } 
            for(i=j-1;i>=0;i--) 
            { 
                cout<<rep[i]; 
                cp++; 
                if(cp==50) 
                { 
                    cp=0; 
                    cout<<endl; 
                } 
            } 
            cout<<endl<<"The last "<<j<<" digits repeat forever."<<endl; 
        } 
        cin>>m>>n; 
    } 
} 

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator