0
已解决
赵逸凡
初级启示者
初级启示者
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int a[500004],b[500010];
string w;
int he;
void Plus(string s1,string s2)
{
he=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
w="";
a[0]=s1.length();
for(int i=1;i<=a[0];i++) a[i]=s1[a[0]-i]-'0';
b[0]=s2.length();
for(int i=1;i<=b[0];i++) b[i]=s2[b[0]-i]-'0';
he=(a[0]>b[0]?a[0]:b[0]);
for(int i=1;i<=he;i++)
{
a[i]+=b[i];
a[i+1]+=a[i]/10;
a[i]%=10;
}
he++;
while(a[he]==0&&he>1) he--;
for(int i=he;i>=1;i--)
w[he-i+1]=a[i]+'0';
}
int main()
{
string a1,b2;
cin>>a1;
b2=a1;
while(cin>>a1)
{
if(a1!="*")
{
he=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
w="";
}
if(a1=="*")
break;
Plus(a1,b2);
for(int i=1;i<=he;i++)
b2[i-1]=w[i];
}
for(int i=0;i<he;i++)
cout<<b2[i];
return 0;
}
我的代码是这样,请帮我改正或给出正解
假设题目是连续输入long long类型的数,以“*”为结束,输出这些数的总和(高精度)
回答正确者考虑奖励10酷町豆~50酷町豆不等,可能更多(前提是回答要早于2月28日24时)
赵逸凡在2020-02-24 21:55:02追加了内容
快点啊
赵逸凡在2020-02-24 21:57:01追加了内容
急需
赵逸凡在2020-02-24 21:58:26追加了内容
不是考试题也不是作业,是我自己出的题,不接受“不会”“呵呵”之类的回答,会给予警告
0
已采纳
刘奕然
初级守护
初级守护
main():
cin>>sa;
while(cin>>sb)
{
if(sb=="*") break;
for(int i=sa.size()-1;i>=0;i--)
a[sa.size()-i]=sa[i]-'0';
for(int i=sb.size()-1;i>=0;i--)
b[sb.size()-i]=sb[i]-'0';
la=sa.size();
lb=sb.size();
lc=max(la,lb)+1;
for(int i=1;i<=lc;i++)
{
c[i]=(a[i]+b[i]+x)%10;
x=(a[i]+b[i]+x)/10;
}
if(!c[lc])
lc--;
for(int i=lc;i>=1;i--)
sc=sc+char(c[i]+'0');
sa=sc;
sc="";
}
for(int i=lc;i>=1;i--)
cout<<c[i];
return 0;
Variable definition:
int a[1010],b[1010],c[1010],la,lb,lc,x;
string sa,sb,sc;
(outside the main())
刘奕然在2020-02-24 22:10:27追加了内容
正解,已测试通过
0
潘晨皓
高级天翼
高级天翼
{
如果(sb=="*") break;
循环(int i=sa.size()-1;i>=0;i--)
a[sa.size()-i]=sa[i]-'0';
循环(int i=sb.size()-1;i>=0;i--)
b[sb.size()-i]=sb[i]-'0';
la=sa.size();
lb=sb.size();
lc=max(la,lb)+1;
循环(int i=1;i<=lc;i++)
{
c[i]=(a[i]+b[i]+x)%10;
x=(a[i]+b[i]+x)/10;
}
如果(!c[lc])
lc--;
循环(int i=lc;i>=1;i--)
sc=sc+char(c[i]+'0');
sa=sc;
sc="";
}
0
0