首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

ACM,大数加法1000位,9度1198WR,求测试数据

2013-06-25 
ACM,大数加法1000位,九度1198WR,求测试数据本帖最后由 youm11 于 2013-05-12 16:34:27 编辑#include stdi

ACM,大数加法1000位,九度1198WR,求测试数据
本帖最后由 youm11 于 2013-05-12 16:34:27 编辑 #include "stdio.h"
#include "string.h"
int main()
{
char a[1010] = {'#'}, b[1010] = {'#'}, c[1010] = {'#'};
int a_length, b_length, c_length, i, j, k, n_a, n_b;
int t = 0;
while(scanf("%s %s", a, b) != EOF)
{

t = 0;
a_length = strlen(a);
b_length = strlen(b);
c_length = a_length > b_length ? a_length : b_length;
c_length += 1;
for(i = a_length - 1, j = b_length - 1, k = c_length - 1; i >= 0 && j >= 0; i -- , j -- , k -- )
{
n_a = (int) (a[i] - '0');
n_b = (int) (b[j] - '0');
if(n_a + n_b > 9) 
{
c[k] = (char) (n_a + n_b - 10 + t + '0');
t = 1;
}
else
{
c[k] = (char) (n_a + n_b + t + '0');
t = 0;
}
}

if(i >= 0)
{
if(t == 1)
{
for(; i>= 0; i -- )
{
n_a = (int) (a[i] - '0');
if(n_a + t > 9)
{
c[i + 1] = (char) (n_a + t - 10 + '0');
t = 1;
}
else
{
c[i + 1] = (char) (a[i] + t);
t = 0;
}
}
}
else
{
for(; i >= 0; i -- )
{
c[i + 1] = a[i];
}
}
}
else if(j >= 0)
{
if(t == 1)
{
for(; j>= 0; j -- )
{
n_b = (int) (b[j] - '0');
if(n_b + t > 9)
{
c[j + 1] = (char) (n_b + t - 10 + '0');
t = 1;
}
else
{
c[j + 1] = (char) (b[j] + t);
t = 0;
}
}
}
else
{
for(; j >= 0; j -- )
{
c[j + 1] = b[j];
}
}
}
else
{}

if(t == 1)
{
c[0] = '1';
}
if(c[0] == '1')
printf("1");
for(k = 1; k < c_length; k ++ )
printf("%c", c[k]);
printf("\n");
for(i = 0; i < 1010; i ++ )
a[i] = '#';
for(i = 0; i < 1010; i ++ )
b[i] = '#';
for(i = 0; i < 1010; i ++ )
c[i] = '#';
}
return 0;
}


[解决办法]
建议以后贴ACM题的顺便把题目贴一下或者大概讲讲问题
一上来就代码,谁也不知道要干嘛 

热点排行