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

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

Posted by xiaomi at 2003-06-28 01:21:55 on Problem 1140
In Reply To:这题怎么会表达错误?!在UVA上通过了的,只是多一个空白行 Posted by:xiaomi at 2003-06-28 01:11:31
> #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