| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:这题怎么会表达错误?!在UVA上通过了的,只是多一个空白行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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator