九度OJ 1137:浮点数加法 (大数运算)
来源:互联网 发布:nodejs python 前景 编辑:程序博客网 时间:2024/06/01 10:45
- 题目描述:
求2个浮点数相加的和
题目中输入输出中出现浮点数都有如下的形式:
P1P2...Pi.Q1Q2...Qj
对于整数部分,P1P2...Pi是一个非负整数
对于小数部分,Qj不等于0
- 输入:
对于每组案例,第1行是测试数据的组数n,每组测试数据占2行,分别是两个加数。
每组测试数据之间有一个空行,每行数据不超过100个字符
- 输出:
每组案例是n行,每组测试数据有一行输出是相应的和。
输出保证一定是一个小数部分不为0的浮点数
- 样例输入:
20.1111111111111111111111111111110.11111111111111111111111111111110000000.6555555555555555555555555555551.444444444444444444444444444445
- 样例输出:
0.22222222222222222222222222222210000002.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****************************************************************/
0 0
- 九度OJ 1137:浮点数加法 (大数运算)
- 九度OJ 1137 浮点数加法
- 浮点数加法 九度oj
- 九度OJ-1137-浮点数加法
- 九度OJ 题目1137:浮点数加法
- 九度OJ-1137:浮点数加法
- 【九度OJ】题目1137:浮点数加法 解题报告
- 题目1137:浮点数加法 九度OJ
- //九度OJ 教程63 大数处理之浮点数加法
- 九度OJ 1129:Skew数 (大数运算)
- 九度[1137]-浮点数加法
- 大数浮点数加法
- 浮点数的大数加法
- 九度OJ 1051:数字阶梯求和 (大数运算)
- 九度OJ 1198:a+b (大数运算)
- 九度OJ 1198 a+b 大数加法水题
- 浮点数的大数加法模板
- [浮点数加法运算]浮点数表示及运算
- 为Python配置Vim编辑器(GUI/非GUI皆可)
- 九度OJ 1136:Number Steps(步数) (基础题)
- 支付宝 免签约即时到账原理 ecshop等 订单状态返回
- JSP中的编码问题
- UVA Josephus Problem 11089 (约瑟夫环) 数学好题
- 九度OJ 1137:浮点数加法 (大数运算)
- android中drawable的各种state
- 【Space Shoot Project】moving the player
- 字体大小(控件的宽和高等属性)的屏幕适配
- 九度OJ 1138:进制转换 (进制转换)
- Java System性能监控
- 智能机器
- 1024程序猿节
- 快速幂算法模板