永发信息网

c++ 两个超大的数相加

答案:2  悬赏:0  手机版
解决时间 2021-01-28 07:19
  • 提问者网友:泪痣哥哥
  • 2021-01-27 13:44
计算2个超级大数的和 Input输入只有2个超级大数A,B,以空格分开。

A,B最多有100位。 Output输出只有一个数 即为 A、B之和。 Sample Input111111111111111111111111111 111111111111111111111111112Sample Output222222222222222222222222223不知道大家有没有更加高效的算法,帮帮我
最佳答案
  • 五星知识达人网友:胯下狙击手
  • 2021-01-27 13:55
#include
#include
using namespace std;
int main()
{
string str1,str2;
int a[250],b[250],len;
int i;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
cin>>str1>>str2;
a[0]=str1.length();
for(i=1;i<=a[0];i++)
{a[i]=str1[a[0]-i]-'0';
}
b[0]=str2.length();
for(i=1;i<=b[0];i++)
{b[i]=str2[b[0]-i]-'0';
}
len=(a[0]>b[0]?a[0]:b[0]);
for(i=1;i<=len;i++)
{
a[i]+=b[i];
a[i+1]+=a[i]/10;
a[i]%=10;
}
len++;
while((a[len]==0)&&(len>1)) len--;
for(i=len;i>=1;i--)
cout< cout< system("pause");
return 0;
}
全部回答
  • 1楼网友:酒者煙囻
  • 2021-01-27 14:58
直接用字符串处理吧。即: 正好是2g是一个应用程序默认允许的最大的内存。如果是int类型,就是8g,不可能了 少年,省省吧,可以小点。 如果非得这样的可以这样 char* buffer = new char[2147483648]; if(!buffer) // 必须检测是否申请成功,不过可能性不大。 { return ; } // 做你要做的 // 例如 buffer[0] = 'a'; 最后必须手动释放内存 delete[] buffer. 最最后等着你的系统变慢甚至卡死吧
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯