暂存
2016-01-15 00:00
239 查看
![](http://static.oschina.net/uploads/img/201601/15103837_HmUo.gif)
![](http://static.oschina.net/uploads/img/201601/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 ; }
相关文章推荐
- hdu1032(水吗?)
- 图的遍历(深度优先搜索法和广度优先搜索法)
- 转移字符"\t”让你想起了什么
- 解决jsp访问jsp与Servlet访问jsp路径存在的差异性比较
- hdu1016(dfs)
- swing之JButton简单封装
- swing之JTable小测试(一个单元格添加两个或多个下拉框)
- 汉诺塔问题(1)
- hdu1287
- hdu(2203)
- poj(1458)(最长公共子序列)
- dp之路
- foj2013
- linux端口开放
- zoj3501
- 结构体——小结
- java swing Jtable&log4j
- poj3641(学习了)
- 雅可比迭代法和高斯赛德尔迭代法
- 双向链表内结点的删除(4)