WA了几次,考虑不是很周全啊。。。。

//  [4/7/2014 Sjm]
/*
推荐测试用例:
1 99999
注意:
1) 小数点左面部分 倒序 存储进数组
2) 小数点右边部分 正序 存储进数组
*/
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 #include <string>
 6 #include <cstring>
 7 #include <algorithm>
 8 using namespace std;
 9 const int MAX = 405;
10
11 int myInit_lef(string str, int myStart, int myArr[])
12 {
13     int pos = 0;
14     for (; myStart >= 0; myStart--){
15         myArr[pos++] = str[myStart] - '0';
16     }
17     return pos;
18 }
19
20 int myInit_rig(string str, int myStart, int myArr[])
21 {
22     int pos = 0;
23     for (int i = myStart; i < str.size(); i++) {
24         myArr[pos++] = str[i] - '0';
25     }
26     return pos;
27 }
28
29 int main()
30 {
31     //freopen("input.txt", "r", stdin);
32     //freopen("output.txt", "w", stdout);
33     string str1, str2;
34     while (cin >> str1 >> str2)
35     {
36         int myLef_1[MAX], myLef_2[MAX], myRig_1[MAX], myRig_2[MAX];
37         memset(myLef_1, 0, sizeof(myLef_1));
38         memset(myLef_2, 0, sizeof(myLef_2));
39         memset(myRig_1, 0, sizeof(myRig_1));
40         memset(myRig_2, 0, sizeof(myRig_2));
41         int pos1 = 0, pos2 = 0; // 设初值为 0,不可能出现 '.' 在 0 位置
42         // 寻找 '.' 位置
43         for (int i = 0; i < str1.size(); i++) {
44             if ('.' == str1[i])
45                 pos1 = i;
46         }
47         for (int i = 0; i < str2.size(); i++) {
48             if ('.' == str2[i])
49                 pos2 = i;
50         }
51         // 若出现 pos1 或 pos2 == 0, 此时并非小数,可视为整数
52         if (pos1 == 0) pos1 = str1.size();
53         if (pos2 == 0) pos2 = str2.size();
54         int lef_1_len, lef_2_len, rig_1_len, rig_2_len;
55         // 小数点左面部分 倒序 存储进数组,eg: 123.456   存储: 321
56         // 小数点右边部分 正序 存储进数组,eg: 0.123     存储: 123
57         lef_1_len = myInit_lef(str1, pos1 - 1, myLef_1);
58         rig_1_len = myInit_rig(str1, pos1 + 1, myRig_1);
59         lef_2_len = myInit_lef(str2, pos2 - 1, myLef_2);
60         rig_2_len = myInit_rig(str2, pos2 + 1, myRig_2);
61         int temp = 0, myLef, myRig;
62         myLef = max(lef_1_len, lef_2_len);
63         myRig = max(rig_1_len, rig_2_len);
64         string str = "";
65         for (int i = myRig - 1; i >= 0; i--) {
66             // 小数点右边部分从数组最后一位开始计算 (因为正序存储)
67             temp = myRig_1[i] + myRig_2[i] + temp;
68             str = char('0' + (temp % 10)) + str;
69             temp = temp / 10;
70         }
71         str = '.' + str;
72         for (int i = 0; i < myLef; i++) {
73             // 小数点左面部分从数组第一位开始计算 (因为倒序存储)
74             temp = myLef_1[i] + myLef_2[i] + temp;
75             str = char('0' + temp % 10) + str;
76             temp = temp / 10;
77         }
78         if (temp) str = char('0' + temp) + str; // 判断是否需要进位
79         int myend = str.size() - 1;
80         while (str[myend] == '0' || str[myend] == '.') {
81             // 若含 '.' 且计算结果最后含 0,则进行去零操作
82             if (str[myend] == '.') { myend--; break; }
83             myend--;
84         }
85         for (int i = 0; i <= myend; i++)
86             printf("%c", str[i]);
87         printf("\n");
88     }
89     return 0;
90 }

转载于:https://www.cnblogs.com/shijianming/p/4140859.html

BigNums 之 hdu 1753相关推荐

  1. hdu 1753大小数相加

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1753 最简小数是小于 1 的数的整数部分需要去掉? import java.math.BigIntege ...

  2. Hdu 1753 大明A+B 高精度小数相加

    题意: 很长很长的小数相加.. 思路: 用1000长的数组处理两个小数..前500存整数..后500存小数..然后相应位相加.. 然后输出除去前导0和后面0的.. Tips: ※ strchr(cha ...

  3. HDU 1753 大明A+B

    大明A+B Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  4. HDU - 1753 - 大明A+B

    题目链接 点此跳转 代码 #include <cstdio> #include <cstdlib> #include <cstring> #include < ...

  5. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  6. ACM的java 傻瓜式教学

    关于eclipse的配置 我感觉我讲不清[逃 开始 从配好之后讲起 文件名命名为Main.java[接下来几行解释为什么要起这个名字 注意第七行那里(为了方便复制我没有加行号)的类的名字必须与文件名相 ...

  7. Java Java Java

    学下java 的大数该怎么用>< hdu 1023 Train Problem II 求 卡特兰 数 诶...不记得卡特兰数的我眼泪掉下来 第一次用 java 大数 有点激动...> ...

  8. ACM Weekly 2

    ACM Weekly 2 涉及的知识点 常见数据类型范围 复杂度估算运行时间 Java的BigInteger 运算相关 万进制 字符串模拟进位 _int128 几何 记忆化 难题解析 拓展的知识点 参 ...

  9. [转] HDU 题目分类

    转载来自:http://www.cppblog.com/acronix/archive/2010/09/24/127536.aspx 分类一: 基础题:1000.1001.1004.1005.1008 ...

最新文章

  1. PowerPoint发布及链接图片的处理
  2. 用户 'IIS APPPOOL\DefaultAppPool'登录失败
  3. 一条数据的漫游奇遇记
  4. Python:为什么只有一个元素的tuple要加逗号?
  5. 机器人学习--Carnegie Mellon University 认知机器人学课程
  6. NumPy Matplotlib PIP安装
  7. cocos2d-x+lua开发模式下编辑器的选择
  8. java实现三级联动查询_jeefast和Mybatis实现三级联动的示例代码
  9. VS Code 轻量级插件推荐
  10. pycharm2016破解方法
  11. 黑客的google运用技巧
  12. 手动搭建webase(3)——WeBASE管理平台
  13. java path类_Java PathParser类代码示例
  14. JS常见的string方法
  15. 如何在局域网内实现文件夹共享
  16. 微信小程序最新新闻资讯行业动态
  17. ATF(Arm Trusted Firmware)/TF-A Chapter 02 BL1-ROMCode
  18. 有哪些常见的游戏建模软件?建模师的日常工作做什么?
  19. 中国人被美国老太太忽悠(转)
  20. 将Catia数据转成Inventor本地数据的工具:Mesh Enabler

热门文章

  1. node.js学习-整理
  2. sql中全文检索的具体细节
  3. JavaScript数据结构——栈(Stack)
  4. python虚拟cpu性能_基于Tensorflow:CPU性能分析
  5. 床车长时间自驾游,大家晚饭后至睡觉前这段时间都在忙什么?
  6. 头条搜索已经全面上线,会不会成为下一个流量风口
  7. 零基础如何考过二级建造师?
  8. 海员可以饮用蒸馏海水吗?
  9. 一个真正容易成大事的人,大多都熬过这4种苦,看看你熬过几种?
  10. 总结目前做得好的新实体店,大致有如下几点