您的位置:首页 > 其它

数组应用——高精度运算的实验范例

2016-08-14 11:52 190 查看
1.高精度数的表示

用一个数组表示一个高精度数:将数字按十进制位分离,每位十进制数依次存储到一个数组中

int a[100]={0};
int n;
string s;
cin>>s;
n=s.length();
for(i=0;i<n;i++)
a[i]=s[n-i-1]-'0';//数组a从右到左按位存储

2.
(1)高精度数加和减

n1为x的位数,n2为y的位数

for(i=0;i<(n1>n2?n1:n2);i++)
a[i]=a[i]+b[i];
if(a[i]>9)
{
a[i]=a[i]-10;
a[i+1]++;
}n为x的位数。若想x<y,数组a和b互换,相减后的差取负
for(i=0;i<n;i++)
{
if(a[i]>b[i])
a[i]=a[i]-b[i];
else
{
a[i]=a[i]+10-b[i];
a[i+1]--;
}
}



(2)高精度数的乘和除
首先要确定积的位数,设两个高精度正整数a和b,La和Lb为其位数。a和b乘积的位数至少为La+Lb-1,若有进位则位数为La+Lb。及位数上限为La+Lb;

for(i=0;i<La-1;i++)
for(j=0;j<Lb-1;j++)
c[i+j]+=a[i]*b[j];
for(i=0;i<La+Lb;i++)
if(c[i]>=10)
{
c[i+j]+=c[i]/10;
c[i]%=10;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐