问题:大明A+B
程序员文章站
2022-07-15 09:42:50
...
问题:大明A+B
https://vjudge.net/problem/HDU-1753
话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。
现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。
现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。
Input 本题目包含多组测试数据,请处理到文件结束。
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。 Output 请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。
Sample Input
1.1 2.9 1.1111111111 2.3444323343 1 1.1Sample Output
4 3.4555434454 2.1
题意分析:
将整数部分和小数部分分别存入到两个数组中,从小数部分开始相加,如果大于10进1就行了。
AC代码:
# include <stdio.h>
# include <string.h>
char a[500], b[500];
int c[500], d[500], e[500], g[500], sum[500], sum1[500];
int main (void)
{
while (~scanf("%s %s", a, b))
{
memset(c, 0, 500);
memset(d, 0, 500);
memset(e, 0, 500);
memset(g, 0, 500);
memset(sum, 0, 500);
memset(sum1, 0, 500);
int a0 = strlen(a), b0 = strlen(b), ca = 0, cb = 0, i, j, m, k = 0, k1 = 0;
for (i = 0; a[i] != '\0'; i ++)
{
if (a[i] == '.')
{
ca = 1;
break;
}
}
m = 0;
for (j = i-1; j >= 0; j --)
{
c[m ++] = a[j] -'0';
}
m = 0;
for(j = i+1; j < a0; j ++)
{
d[m ++] = a[j] - '0';
}
for (i = 0; b[i] != '\0'; i ++)
{
if (b[i] == '.')
{
ca = 1;
break;
}
}
m = 0;
for (j = i-1; j >= 0; j --)
{
e[m ++] = b[j] -'0';
}
m = 0;
for(j = i+1; j < b0; j ++)
{
g[m ++] = b[j] - '0';
}
m = 0;
for (i = 499; i >= 0; i --)
{
sum[i] += d[i] + g[i];
if (i == 0 && sum[i] >= 10)
{
sum[i] -= 10;
sum1[0] ++;
}
if (i != 0 && sum[i] >= 10)
{
sum[i] -= 10;
sum[i-1] ++;
}
}
for (i = 0; i <= 499; i ++)
{
sum1[i] += c[i] + e[i];
if (sum1[i] >= 10)
{
sum1[i] -= 10;
sum1[i+1] ++;
}
}
for (i = 499; i >= 0; i --)
{
if (sum1[i] != 0)
{
break;
}
}
if (i == -1)
k1 = 1;
if (k1 == 1)
{
printf("0");
for (i = 499; i >= 0; i --)
{
if (sum[i] != 0)
break;
}
if (i >= 0)
printf(".");
for (j = 0; j <= i; j ++)
{
printf("%d", sum[j]);
}
printf("\n");
}
else
{
for (j = i; j >= 0; j --)
printf("%d", sum1[j]);
for (i = 499; i >= 0; i --)
{
if (sum[i] != 0)
break;
}
if(i >= 0)
printf(".");
for (j = 0; j <= i; j ++)
{
printf("%d", sum[j]);
}
printf("\n");
}
}
return 0;
}
上一篇: Parity
下一篇: 以太坊parity安装