巢穴

about:blank

P1001

orz.啊..orz..
就是一个普通的高精度..注意下格式的细节就可以..
- -我用的dev c++..忘写#include <string>编译过了..
然后提交的时候不知道..就编译错误...
然后把重载运算符改成了普通方法..
然后把class改成了struct..
总只有点晕..
后来才发现是少写了#include......

#include <iostream>
#include 
<string>
#include 
<math.h>
using namespace std;
const int MAXN=10000;
struct Decimal 
{
  
private:
          
int len;//总长度 
          int point_pos;//小数点位置 
          int number[MAXN];//具体数 
  public:
         Decimal();
         Decimal(
string);
         
void print();
         Decimal ch(Decimal);
}
;
Decimal::Decimal()
{
}

Decimal Decimal::ch(Decimal x)
{
 
int num[MAXN],n_len=0;
 memset(num,
0,sizeof(num));
 n_len
=x.len+Decimal::len;
 
for (int i=1;i<=x.len;i++)
 
{
  
for (int j=1;j<=Decimal::len;j++)
  
{
   num[i
+j-1]+=x.number[i]*Decimal::number[j];
   num[i
+j]+=num[i+j-1]/10;
   num[i
+j-1]%=10;  
  }

 }

 
int point_pos=x.point_pos+Decimal::point_pos;
 
if (num[n_len]==0) n_len--;
 Decimal result;
 result.len
=n_len;
 result.point_pos
=point_pos;
 
for (int i=1;i<=n_len;i++)
     result.number[i]
=num[i];
 
return result;
}


Decimal::Decimal(
string x)
{
 
 
int i=x.length();
 
int sign=0;
 
for (int j=0;j<x.length();j++)
     
if (x[j]=='.') sign=1;
 
int point_pos=0;
 
int len=i-sign;

 i
=len;
 
for (int j=0;j<x.length();j++)
 
{
     
if (x[j]=='.') point_pos=i;
     
if (x[j]<='9'&&x[j]>='0')
     
{
      number[i
--]=x[j]-48;
      
//cout<<number[i]<<endl;
     }

 }

 Decimal::point_pos
=point_pos;
 Decimal::len
=len;
}


void Decimal::print()
{

 
int pe=1;
 
while (number[pe]==0&&pe<=point_pos) pe++;
 
int p=len;
 
while (number[p]==0&&p>point_pos&&point_pos>pe) p--;
 
//cout<<pe<<endl;
 for (int i=p;i>=pe;i--)
 
{
  
if (point_pos==i) cout<<".";
  cout
<<number[i];
 }

 cout
<<endl;
}

int main()
{

    
string x;
    
int n;
    
    
while(cin>>x>>n)
    
{
     Decimal d(x);
    
// d.print();
     Decimal result("1.0");
   
//  result.print();
     for (int i=1;i<=n;i++)
     
{
      result
=result.ch(d);
     }

     result.print();
    }

    system(
"pause");
    
return 0;
}

posted on 2009-10-14 22:34 Vincent 阅读(202) 评论(0)  编辑 收藏 引用 所属分类: 数据结构与算法


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理