BigNums 之 hdu 1753
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相关推荐
- hdu 1753大小数相加
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1753 最简小数是小于 1 的数的整数部分需要去掉? import java.math.BigIntege ...
- Hdu 1753 大明A+B 高精度小数相加
题意: 很长很长的小数相加.. 思路: 用1000长的数组处理两个小数..前500存整数..后500存小数..然后相应位相加.. 然后输出除去前导0和后面0的.. Tips: ※ strchr(cha ...
- HDU 1753 大明A+B
大明A+B Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- HDU - 1753 - 大明A+B
题目链接 点此跳转 代码 #include <cstdio> #include <cstdlib> #include <cstring> #include < ...
- 杭电OJ分类题目(1)
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...
- ACM的java 傻瓜式教学
关于eclipse的配置 我感觉我讲不清[逃 开始 从配好之后讲起 文件名命名为Main.java[接下来几行解释为什么要起这个名字 注意第七行那里(为了方便复制我没有加行号)的类的名字必须与文件名相 ...
- Java Java Java
学下java 的大数该怎么用>< hdu 1023 Train Problem II 求 卡特兰 数 诶...不记得卡特兰数的我眼泪掉下来 第一次用 java 大数 有点激动...> ...
- ACM Weekly 2
ACM Weekly 2 涉及的知识点 常见数据类型范围 复杂度估算运行时间 Java的BigInteger 运算相关 万进制 字符串模拟进位 _int128 几何 记忆化 难题解析 拓展的知识点 参 ...
- [转] HDU 题目分类
转载来自:http://www.cppblog.com/acronix/archive/2010/09/24/127536.aspx 分类一: 基础题:1000.1001.1004.1005.1008 ...
最新文章
- PowerPoint发布及链接图片的处理
- 用户 'IIS APPPOOL\DefaultAppPool'登录失败
- 一条数据的漫游奇遇记
- Python:为什么只有一个元素的tuple要加逗号?
- 机器人学习--Carnegie Mellon University 认知机器人学课程
- NumPy Matplotlib PIP安装
- cocos2d-x+lua开发模式下编辑器的选择
- java实现三级联动查询_jeefast和Mybatis实现三级联动的示例代码
- VS Code 轻量级插件推荐
- pycharm2016破解方法
- 黑客的google运用技巧
- 手动搭建webase(3)——WeBASE管理平台
- java path类_Java PathParser类代码示例
- JS常见的string方法
- 如何在局域网内实现文件夹共享
- 微信小程序最新新闻资讯行业动态
- ATF(Arm Trusted Firmware)/TF-A Chapter 02 BL1-ROMCode
- 有哪些常见的游戏建模软件?建模师的日常工作做什么?
- 中国人被美国老太太忽悠(转)
- 将Catia数据转成Inventor本地数据的工具:Mesh Enabler