您的位置:首页 > 产品设计 > UI/UE

POJ 1503 Integer Inquiry

2016-04-26 18:08 501 查看
题意:

大数加法。其中,每个整数最多有100位,最多有100个整数相加。

思路:

将整数的每一位存储在数组中,模拟加法过程即可。

代码如下:

#include <iostream>

using namespace std;

#define MAXLen 110

void char2int(char data[])
{
int len = 0;    //字符串长度

//字符串逆序
len = strlen(data);
for(int i = 0; i < len/2; i++)
{
int t = data[i];
data[i] = data[len - 1 - i];
data[len - 1- i] = t;
}

for(int i = 0; i < len; i++)    //字符型转换为int型
{
data[i] = data[i] - '0';
}
}

int main()
{
char data1[MAXLen] = {0};
char data2[MAXLen] = {0};
int len1 = 0;
int len2 = 0;
int maxl = 0;
while(true)
{
gets(data2);
len2 = strlen(data2);
if(len1 > len2)
{
maxl = len1;
}
else
{
maxl = len2;
}

if(data2[0] == '0' && len2 == 1)
{
break;
}
char2int(data2);
for(int i = 0; i < maxl; i++)
{
data1[i] = data1[i] + data2[i];
if(data1[i] > 9)
{
data1[i] = data1[i]%10;
data1[i + 1]++;
}
}
if(data1[maxl] == 0)
{
len1 = maxl;
}
else
{
len1 = maxl + 1;
}
}
for(int i = maxl - 1;i >=0;i--)
{
printf("%d",data1[i]);
}
printf("\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: