首页 > 学院 > 开发设计 > 正文

高精度算法

2019-11-10 19:03:18
字体:
来源:转载
供稿:网友

加法

#include <iostream>

using namespace std;

const int maxn=600;

int add[maxn];

int main()

{

string a,b;

cin>>a>>b;

int m,n;

if(a.length()>b.length())

m=a.length();

else m=b.length();

for(int i=0;i<a.length();i++)

add[i]=a[a.length()-1-i]-48;

for(int i=0;i<b.length();i++)

add[i]+=b[b.length()-1-i]-48;

n=m;

for(int i=0;i<m;i++)

{

if(add[i]>=10)

{

add[i+1]+=add[i]/10;

add[i]%=10;

if(i==m-1)

n=m+1;

}

}

for(int i=n-1;i>=0;i--)

cout<<add[i];

cout<<endl;

return 0;

}

阶乘和,高精度乘法和加法

#include <iostream>

using namespace std;

const int maxn=100;

int len=0;

int countup[maxn];

int temp[maxn];

void setblank()

{

temp[0]=1;

for(int i=1;i<maxn;i++)

temp[i]=0;

}

void multi(int k)

{

for(int i=0;i<=len;i++)

temp[i]*=k;

for(int i=0;i<=len;i++)

{

if(temp[i]>=10)

{

temp[i+1]+=temp[i]/10;

temp[i]%=10;

if(i==len)

len++;

}

}

}

void add()

{

for(int i=0;i<maxn;i++)

countup[i]+=temp[i];

for(int i=0;i<maxn;i++)

if(countup[i]>=10)

{

countup[i+1]+=countup[i]/10;

countup[i]%=10;

}

}

int main()

{

int n;

cin>>n;

for(int j=n;j>=1;j--)

{

setblank();

for(int i=1;i<=j;i++)

multi(i);

add();

}

for(int i=len;i>=0;i--)

cout<<countup[i];

cout<<endl;

return 0;

}


上一篇:lo4net的简单运用

下一篇:注解 Annotation

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表