POJ1001(北大ACM1001&&nyist 155 )

來源:互聯網
上載者:User

高精度乘法,字串處理

 

#include <iostream>   #include<iomanip>   #include<cstring>   using namespace std;  int s;  void chen(char a[],char b[])//a=a*b      { int i,j,k,l,sum,c[410]={0};      l=strlen(a)+strlen(b);      for(i=strlen(b)-1;i>=0;i--)      for(j=strlen(a)-1,k=i+j+1;j>=0;j--,k--)      { sum=(b[i]-'0')*(a[j]-'0')+c[k];        c[k]=sum%10;c[k-1]+=sum/10;                           }      for(i=c[0]?0:1,j=0;i<l;i++)        a[j++]=(c[i]+'0'); a[j]=0;    }    void quw0(char a[]) //去除尾部多餘的零   {   int i=strlen(a)-1;   while(a[i]=='0') {a[i]=0;i--;}  }  void jilu(char a[])  {   int i,t;for(i=0;i<strlen(a);i++) //判斷有沒有小數點if(a[i]=='.') break;if(i!=strlen(a))  //有小數點{for(i=strlen(a)-1,s=0;i>=1;i--)// s記錄小數位元   if(a[i]!='.') s++;  else break;if(a[i=0]=='0') //  0.0123變成123   {   for(i=2;i<strlen(a);i++)  if(a[i]!='0') {strcpy(a,&a[i]);break;}  }  else    //將1.4321 變成14321           {   for(t=0,i=1;i<strlen(a)-1;i++)              {   if(a[i]=='.') t=1;                   if(t) a[i]=a[i+1];              }              a[i]=0;          } }    }     void show(char a[])  {   int i;      if(s>=strlen(a)) cout<<'.'<<setfill('0')<<setw(s)<<a<<endl;// 前面補零       else                                   //不用補零,直接加入小數點輸出           {for(i=0;i<strlen(a);i++)           if(strlen(a)-s==i) {cout<<'.'<<&a[i]; break;}              else cout<<a[i];          cout<<endl;          }    }    int main()  {   int n; char b[205],a[205];   while(cin>>b>>n)   { if(n==0) {cout<<1<<endl;continue;}  s=0;    quw0(b);  jilu(b);    strcpy(a,b);    for(int i=2;i<=n;i++)       chen(a,b);      s*=n; //結果的小數位元     show(a);   }   return 0;  }  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.