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 ;
}
#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 ;
}