| ||||||||||
| 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 | |||||||||
高精度除法+高精度加法#include<iostream>
#define MAXN 11
using namespace std;
int temp[MAXN][MAXN];
int e[MAXN];
int Fac(int n)
{
if(n==0||n==1) return 1;
return n*Fac(n-1);
}
void Div(int d,int r)
{
int j,n=1;
for( j=0 ; j<MAXN ; j++ )
{
temp[r][j]=n/d;
if(n%d) n=(n%d)*10;
else break;
}
}
void Rnd(int n)
{
int i,c,t;
if(n<5) return;
c=1;
for( i=MAXN-2 ; i>=0 ; i-- )
{
t=e[i]+c;
e[i]=t%10;
c=t/10;
}
}
void Dis_e()
{
int i,end=-1;
for( i=MAXN-2 ; i>=0&&end<0 ; i-- )
if(e[i]) end=i;
cout<<e[0];
if(end) cout<<".";
for( i=1 ; i<=end ; i++ )
cout<<e[i];
cout<<endl;
}
void Cal_e(int n)
{
int i,j,c,t;
memset(temp,0,sizeof(temp));
for( i=0 ; i<=n ; i++ )
Div(Fac(i),i);
c=0;
memset(e,0,sizeof(e));
for( j=MAXN-1 ; j>=0 ; j-- )
{
for( i=t=0 ; i<=n ; i++)
t+=temp[i][j];
e[j]=(t+c)%10;
c=(t+c)/10;
}
Rnd(e[MAXN-1]);
Dis_e();
}
int main()
{
int i;
cout<<"n e"<<endl;
cout<<"- -----------"<<endl;
for( i=0 ; i<=9 ; i++)
{
cout<<i<<" ";
Cal_e(i);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator