问题标题: 求高精度加法代码

0
0
已解决
王子凡
王子凡
高级光能
高级光能

这次区赛第三题四高加,本蒟蒻不会做,so 在问答上问一下

求dalao,求代码


0
已采纳
王欣怡
王欣怡
新手光能
新手光能
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int w[1000010],a[1000010],b[1000010];
void he()
{
    w[0]=max(a[0],b[0]);
    int jw=0,h;
    for(int i=1;i<=w[0];i++)
    {
        h=a[i]+b[i]+jw;
        w[i]=h%10;
        jw=h/10;
    }
    if(jw!=0)
    {
        w[0]++;
        w[w[0]]=jw;
    }
}
int main()
{
    char s1[1000010],s2[1000010];
    cin>>s1>>s2;
    a[0]=strlen(s1);
    b[0]=strlen(s2);
    for(int i=1;i<=a[0];i++)
        a[i]=s1[a[0]-i]-'0';
    for(int i=1;i<=b[0];i++)
        b[i]=s2[b[0]-i]-'0';
    he();   
    for(int i=w[0];i>=1;i--)cout<<w[i];
    return 0;
} 

贾老师讲的!!

100!!!

求采纳

0
0
0
王子翔
王子翔
新手光能
新手光能

现在大佬们都不在线

这是错误代码,仅供参考

0分

    char a1[100],b1[100];  
    int a[100],b[100],c[100];  
    int a1_len,b1_len,lenc,i,x;  
    memset(a,0,sizeof(a));   
    memset(b,0,sizeof(b));   
    memset(c,0,sizeof(c));  

    gets(a1);   
    gets(b1); //输入加数与被加数   

    a1_len=strlen(a1);   
    b1_len=strlen(b1);   

    for (i=0;i<=a1_len-1;i++)   
    {  
        a[a1_len-i]=a1[i]-48; //将操作数放入a数组    
    }  

    for (i=0;i<=b1_len-1;i++)  
    {  
        b[b1_len-i]=b1[i]-48; //将操作数放入b数组   
    }   

    lenc =1;   
    x=0;   

   while(lenc <=a1_len || lenc <=b1_len)   
   {   
        c[lenc]=a[lenc]+b[lenc]+x; //两数相加    
        x=c[lenc]/10;   //要进的位  
        c[lenc]=c[lenc]%10;     //进位后的数  
        lenc++;     //数组下标加1  
    }  

    c[lenc]=x;  
    if (c[lenc]==0)  
    {  
        lenc--; //处理最高进位   
    }   

    for (i=lenc;i>=1;i--)  
    {  
        cout<<c[i]; //输出结果      
    }  
    cout<<endl;  

 

0
王子健
王子健
初级天翼
初级天翼

大佬们最近都在预备考试了。

所以我来回答

void函数:

整形a[100000],b[100000];
void add(string s1,string s2)
{
    memset(a,0,sizeof(a));//清零
    memset(b,0,sizeof(b));
    循环(int i=0;i<s1.size();i++)
    {
        a[i]=s1[s1.size()-i-1]-'0';
    }
    for(int i=0;i<s2.size();i++)
    {
        b[i]=s2[s2.size()-i-1]-'0';
    }
    int len=s1.size()>s2.size()?s1.size():s2.size();
    for(int i=0;i<len;i++)
    {
        a[i]=a[i]+b[i];
        a[i+1]+=a[i]/10;
        a[i]%=10;
    }
    if(a[len]>0)len++;
    for(int i=len-1;i>=0;i--)
    {
        cout<<a[i];
    }
    cout<<endl;
}

int main()函数:

 string s1,s2;
 输入>>s1>>s2;
 add(s1,s2);
返回值0;

void函数上面有一段代码是:

#include<bits/stdc++.h>
using namespace std;

寄的才拿(记得采纳)歇歇辣(谢谢了)

0
我要回答