计算2个超级大数的和 Input输入只有2个超级大数A,B,以空格分开。
A,B最多有100位。 Output输出只有一个数 即为 A、B之和。 Sample Input111111111111111111111111111 111111111111111111111111112Sample Output222222222222222222222222223不知道大家有没有更加高效的算法,帮帮我
c++ 两个超大的数相加
答案:2 悬赏:0 手机版
解决时间 2021-01-28 07:19
- 提问者网友:泪痣哥哥
- 2021-01-27 13:44
最佳答案
- 五星知识达人网友:胯下狙击手
- 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;
}
#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<
return 0;
}
全部回答
- 1楼网友:酒者煙囻
- 2021-01-27 14:58
直接用字符串处理吧。即:
正好是2g是一个应用程序默认允许的最大的内存。如果是int类型,就是8g,不可能了
少年,省省吧,可以小点。
如果非得这样的可以这样
char* buffer = new char[2147483648];
if(!buffer) // 必须检测是否申请成功,不过可能性不大。
{
return ;
}
// 做你要做的
// 例如 buffer[0] = 'a';
最后必须手动释放内存 delete[] buffer.
最最后等着你的系统变慢甚至卡死吧
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯