九度OJ 1137:浮点数加法 (大数运算)
2015-10-24 12:04
399 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2725
解决:736
题目描述:
求2个浮点数相加的和
题目中输入输出中出现浮点数都有如下的形式:
P1P2...Pi.Q1Q2...Qj
对于整数部分,P1P2...Pi是一个非负整数
对于小数部分,Qj不等于0
输入:
对于每组案例,第1行是测试数据的组数n,每组测试数据占2行,分别是两个加数。
每组测试数据之间有一个空行,每行数据不超过100个字符
输出:
每组案例是n行,每组测试数据有一行输出是相应的和。
输出保证一定是一个小数部分不为0的浮点数
样例输入:
样例输出:
来源:2008年北京大学软件所计算机研究生机试真题
思路:
容易犯细节错误,此题我WA了好几次。
代码:
内存限制:32 兆
特殊判题:否
提交:2725
解决:736
题目描述:
求2个浮点数相加的和
题目中输入输出中出现浮点数都有如下的形式:
P1P2...Pi.Q1Q2...Qj
对于整数部分,P1P2...Pi是一个非负整数
对于小数部分,Qj不等于0
输入:
对于每组案例,第1行是测试数据的组数n,每组测试数据占2行,分别是两个加数。
每组测试数据之间有一个空行,每行数据不超过100个字符
输出:
每组案例是n行,每组测试数据有一行输出是相应的和。
输出保证一定是一个小数部分不为0的浮点数
样例输入:
2 0.111111111111111111111111111111 0.111111111111111111111111111111 10000000.655555555555555555555555555555 1.444444444444444444444444444445
样例输出:
0.222222222222222222222222222222 10000002.1
来源:2008年北京大学软件所计算机研究生机试真题
思路:
容易犯细节错误,此题我WA了好几次。
代码:
#include <stdio.h> #include <string.h> char s1[110], s2[110], s[110]; int Find(char a[], int n) { int i; for (i = 0; a[i]; i++) { if (a[i] == '.') { return i; } } return -1; } int main() { int ca; scanf("%d", &ca); while (ca--) { scanf("%s%s", s1, s2); int n1 = strlen(s1); int n2 = strlen(s2); int pos1 = 0, pos2 = 0; pos1 = Find(s1, n1); pos2 = Find(s2, n2); int i = n1, j = n2; int d = (n1 - pos1) - (n2 - pos2); if (d > 0) { for (; j < n2 + d; j++) { s2[j] = '0'; } s2[j] = '\0'; n2 = j; } else if (d < 0) { for (; i < n1 - d; i++) { s1[i] = '0'; } s1[i] = '\0'; n1 = i; } i--; j--; int t = 0, len = 0; while (i >= 0 && j >= 0) { if(s1[i] == '.') { s[len] = '.'; } else { t += s1[i] + s2[j] - 2 * '0'; s[len] = t % 10 + '0'; t /= 10; } len++; i--; j--; } while (i >= 0) { t += s1[i--] - '0'; s[len++] = t % 10 + '0'; t /= 10; } while (j >= 0) { t += s2[j--] - '0'; s[len++] = t % 10 + '0'; t /= 10; } if (t == 1) { s[len++] = '1'; } j = 0; while (s[j] == '0') { j++; } for (i = len - 1; i >= j; i--) { printf("%c", s[i]); } printf("\n"); } return 0; } /************************************************************** Problem: 1137 User: liangrx06 Language: C Result: Accepted Time:150 ms Memory:912 kb ****************************************************************/
相关文章推荐
- JSP中的编码问题
- 为Python配置Vim编辑器(GUI/非GUI皆可)
- 九度OJ 1136:Number Steps(步数) (基础题)
- 总结sublime c++编译环境搭建 | 中文乱码问题解决方案 |sidebar配置 |sublime最佳插件列表|最佳主题方案
- 九度OJ 1136:Number Steps(步数) (基础题)
- HYSBZ 2301 Problem b 莫比乌斯 分块优化
- 从源码角度深入理解Toast
- 从源码角度深入理解Toast
- 从源码角度深入理解Toast
- C#入门经典
- 从源码角度深入理解Toast
- POJ 2240 Arbitrage 最短路径 Floyed-Warshall
- bzoj4102【Usaco2015 Open】Bessie
- android studio制作9-patch图片
- 我读Fine-Grained Change Detection of Misaligned Scenes with Varied Illuminations
- 自定义虚拟键盘-光标不随自己点在哪里而移动
- 九度OJ 1135:字符串排序 (排序)
- [CareerCup] 12.2 Find the Reason of Crash 找到程序崩溃的原因
- 九度OJ 1135:字符串排序 (排序)
- 三条坐标轴为母线的圆锥面方程