暂存

15103837_HmUo.gif 15103837_HfNk.gif View Code

    
#include " iostream "
#include
" iostream "
using namespace std;

int n;
int mark = 0 ;
char a[ 50 ] , b[ 50 ];
int c[ 50 ] , d[ 50 ];
int f[ 50 ] , e[ 50 ];
int La, Lb;
int marka, markb;
int s,t;
int i,j;
int _max;

int Max( int x, int y)
{
return x > y ? x:y;
}
void Add()
{
memset(e,
0 , sizeof (e));
int m = 0 ,flag = 0 ;
if (s > t)
{
for (i = s - 1 ,j = t - 1 ;i >= s - t,j >= 0 ;i -- ,j -- )
{
e[m
++ ] = (c[i] + d[j] + flag) % 10 ;
flag
= (c[i] + d[j] + flag) / 10 ;
}
for (i = s - t - 1 ;i >= 0 ;i -- )
{
e[m
++ ] = (c[i] + flag) % 10 ;
flag
= (c[i] + flag) / 10 ;
}
}
else
{
for (i = t - 1 ,j = s - 1 ;i >= t - s,j >= 0 ; i -- ,j -- )
{
e[m
++ ] = (d[i] + c[j] + flag) % 10 ;
flag
= (d[i] + c[j] + flag) / 10 ;
}
if (t > s)
{
for (i = t - s - 1 ;i >= 0 ;i -- )
{
e[m
++ ] = (d[i] + flag) % 10 ;
flag
= (d[i] + flag) / 10 ;
}
}
}
while (flag)
{
e[m
++ ] = flag % 10 ;
flag
/= 10 ;
}
Lb
= 0 ;
for (i = m - 1 ;i >= 0 ;i -- )
{
b[Lb
++ ] = e[i] + 48 ;
if (i == _max) b[Lb ++ ] = ' . ' ;
}
memset(c,
0 , sizeof (c));
memset(d,
0 , sizeof (d));

}
int main()
{

while (cin >> n)
{
memset(b,
' 0 ' , sizeof (b));
Lb
= 0 ;
while (n -- )
{
s
= 0 ,t = 0 ;
cin
>> a;
La
= strlen(a);
marka
= La - 1 ;
markb
= Lb - 1 ;
for (i = 0 ;i < La;i ++ ) if (a[i] != ' . ' ) c[s ++ ] = a[i] - ' 0 ' ;
for (i = 0 ;i < La;i ++ )
if (a[i] == ' . ' ) { marka = i; break ;}
for (i = 0 ;i < Lb;i ++ ) if (b[i] != ' . ' ) d[t ++ ] = b[i] - ' 0 ' ;

for (i = 0 ; i < Lb; i ++ )
if (b[i] == ' . ' ) { markb = i; break ;}

_max
= Max(La - marka - 1 , Lb - markb - 1 );

if (La - marka - 1 > Lb - markb - 1 )
{
for (i = Lb ; i < Lb + (La - marka - Lb + markb); i ++ )
d[t
++ ] = 0 ;
}
else
{
for (i = La ; i < La + (Lb - markb - La + marka); i ++ )
c[s
++ ] = 0 ;
}
Add();
}
int sign = Lb;

int LL = strlen(b);
int g = 0 ;
for ( i = 0 ; i < Lb ; i ++ ) if (b[i] == ' . ' ) sign = i;
for (i = 0 ;i < sign;i ++ )
f[g
++ ] = b[i] - ' 0 ' ;
for (i = sign + 1 ; i <= sign + 16 ; i ++ ) f[g ++ ] = b[i] - ' 0 ' ;
int flag = 0 ,k = 0 ;
for (i = g - 2 ;i >= 0 ;i -- )
{
if (f[i + 1 ] > 4 )
{
f[i]
= (f[i] + 1 + flag) % 10 ;
flag
= (f[i] + 1 + flag) / 10 ;
}
else break ;
}
if (flag) cout << flag;
for (i = 0 ;i < sign;i ++ )
{
cout
<< f[i];
}
cout
<< " . " ;
for (i = sign;i < sign + 12 ;i ++ )
cout
<< f[i];
cout
<< endl;
}
return 0 ;
}

转载于:https://my.oschina.net/garyun/blog/602959

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值