首页 > 电脑

c++高精度运算:输入两数求乘积。求大神帮忙看下出错在哪里,谢谢啦。

更新时间2018-08-06 18:21:37

#include<bits/stdc++.h>

using namespace std;

int la[1010],lb[1010],lc[1010];

int main()

{

int i,j,k;

string a,b;

cin>>a>>b;

k=0;

for(i=a.size()-1;i>=0;i--)

{

la[k]=a[i]-'0';

k++;

}

k=0;

for(j=b.size();j>=0;j--)

{

lb[k]=b[i]-'0';

k++;

}

for(i=0;i<=a.size()-1;i++)

{

for(j=0;j<=b.size()-1;j++)

lc[i+j]=lc[i+j]+lc[i]*lc[j];

}

for(k=0;k<a.size()+b.size()-1;k++)

{

if(lc[k]>=10)

{

lc[k]=lc[k]%10;

lc[k+1]=lc[k+1]+lc[k]/10;

}

}

if(lc[a.size()+b.size()-1]==0){

for(k=a.size()+b.size()-2;k>=0;k--)

cout<<lc[k]; 

}

else{

for(k=a.size()+b.size()-1;k>=0;k--)

cout<<lc[k];

}

return 0;


都是粗心的小错

#include<bits/stdc++.h>

 

using namespace std;

 

int la[1010],lb[1010],lc[1010];

 

int main()

 

{

    int i,j,k;

    string a,b;

    cin>>a>>b;

    k=0;

    for(i=a.size()-1; i>=0; i--)

        {

            la[k]=a[i]-'0';

            k++;

        }

    k=0;

    for(j=b.size()-1; j>=0; j--) //b.size()-1

        {

            lb[k]=b[j]-'0'; //这里是j 

 

            k++;

        }

    for(i=0; i<=a.size()-1; i++)

        {

            for(j=0; j<=b.size()-1; j++)  

            {

                lc[i+j]=lc[i+j]+la[i]*lb[j]; //la[i]*lb[j] 

 

            }

        }

    for(k=0; k<a.size()+b.size()-1; k++)

        {

            if(lc[k]>=10)

                {

                    lc[k]=lc[k]%10;

                    lc[k+1]=lc[k+1]+lc[k]/10;

                }

        }

    if(lc[a.size()+b.size()-1]==0)

        {

            for(k=a.size()+b.size()-2; k>=0; k--)

                cout<<lc[k];

        }

    else

        {

            for(k=a.size()+b.size()-1; k>=0; k--)

                cout<<lc[k];

        }

    return 0;

}


相关标签:谢谢大神运算

上一篇:西安vb和单色哪个好?

下一篇:使用Unity3D不能进行JS脚本编写