九度oj 题目1137:浮点数加法
- 题目描述:
-
求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 这道题自我感觉做的麻烦了,主要是对阶#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm> #define MAX 102 char A[MAX];
char B[MAX];
int AZ[MAX];
int BZ[MAX];
int AX[MAX];
int BX[MAX]; int calSump(int a[], int b[], int n) {
int ci = ;
for(int i = ; i < n; i++) {
int temp = a[i] + b[i] + ci;
int ben = temp % ;
ci = temp/;
a[i] = ben;
}
return ci;
} void calSumz(int a[], int b[], int n, int ci) {
for(int i = ; i < n; i++) {
int temp = a[i] + b[i] + ci;
int ben = temp % ;
ci = temp/;
a[i] = ben;
}
a[n] = ci;
} int max(int a, int b) {
return a>b?a:b;
} int main(int argc, char const *argv[])
{
int n;
//freopen("input.txt","r",stdin);
scanf("%d",&n);
while(n--) {
scanf("%s",A);
scanf("%s",B);
int azw = , axw = ;
int bzw = , bxw = ;
for(int i = ; i < strlen(A); i++) {
if(A[i] != '.') {
azw++;
}
else {
break;
}
}
//11.12 5 - 2 - 1 = 2
axw = strlen(A) - azw - ; for(int i = ; i < strlen(B); i++) {
if(B[i] != '.') {
bzw++;
}
else {
break;
}
}
//11.12 5 - 2 - 1 = 2
bxw = strlen(B) - bzw - ; memset(AZ, , sizeof(AZ));
memset(AX, , sizeof(AX));
memset(BZ, , sizeof(BZ));
memset(BZ, , sizeof(BZ)); for(int i = azw - ,j = ; i >= , j < azw; i--,j++) {
AZ[j] = A[i] - '';
}
for(int i = bzw - ,j = ; i >= , j < bzw; i--,j++) {
BZ[j] = B[i] - '';
}
//0.123
//0.123456789
int maxz = max(azw, bzw);
int maxp = max(axw, bxw);
if(axw < bxw) {
int j = ;
for(j = ; j < (bxw - axw); j++) {
AX[j] = ;
}
for(int i = strlen(A) - ;j < bxw,i > azw;j++, i--) {
AX[j] = A[i] - '';
}
for(int i = strlen(B) - , k = ; i >= , k < strlen(B); i--,k++) {
BX[k] = B[i] - '';
}
}
else {
int j = ;
for(j = ; j < (axw - bxw); j++) {
BX[j] = ;
}
for(int i = strlen(B) - ;j < axw,i > bzw;j++, i-- ) {
BX[j] = B[i] - '';
}
for(int i = strlen(A) - , k = ; i >= , k < strlen(A); i--,k++) {
AX[k] = A[i] - '';
}
} int pci = calSump(AX, BX, maxp); calSumz(AZ,BZ, maxz, pci); bool isAll0 = true;
for(int i = maxz + ; i >= ; i--) {
if(isAll0 && AZ[i] != ) {
isAll0 = false;
}
if(!isAll0) {
printf("%d", AZ[i]);
}
}
if(isAll0) {
printf("%d",);
}
printf("."); int last = maxp-;
for(int i = ; i < maxp; i++) {
if(AX[i] != ) {
last = i;
break;
}
}
for(int i = maxp-; i >= last; i--) {
printf("%d", AX[i]);
}
printf("\n");
}
return ;
}
九度oj 题目1137:浮点数加法的更多相关文章
- 九度OJ题目1137:浮点数加法 (JAVA)使用BigDecimal四个案例都通过了,但是超时了。
题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2...Pi.Q1Q2...Qj 对于整数部分,P1P2...Pi是一个非负整数 对于小数部分,Qj不等于0 输入: ...
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- 九度oj 题目1007:奥运排序问题
九度oj 题目1007:奥运排序问题 恢复 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ题目1105:字符串的反码
tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...
- 九度oj题目1009:二叉搜索树
题目描述: 判断两序列是否为同一二叉搜索树序列 输入: 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...
- 九度oj题目1002:Grading
//不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...
随机推荐
- How to detect the presence of the Visual C++ 2010 redistributable package
Question: I have seen your previous blog posts that describe how to detect the presence of the Visua ...
- ListView与ScrollView冲突的4种解决方案
问题解决方案1.手动设置ListView高度 经过测试发现,在xml中直接指定ListView的高度,是可以解决这个问题的,但是ListView中的数据是可变的,实际高度还需要实际测量.于是手动 ...
- 分布式系统中的CAP原理和BASE理论
CAP是一致性(Consistency).可用性(Availability).分区容忍性(Partition tolerance)的缩写.CAP原理指的是这三个要素最多只能同时实现两点,不可能三者兼顾 ...
- springMVC 中 ajax get 请求和 post 请求的坑以及参数传递
1, ajax 请求 无论为 post ,或者 get ,url中带有?形式的参数,后台都能以String类型变量接收,变量名称和参数名称必须一致 前台ajax: $.ajax( "prod ...
- Vue v-if与v-show的区别
用了 viewjs 预览图片的时候 发现 用着两个 还是有区别的, 相同点==== v-if与v-show都可以动态控制dom元素显示隐藏 不同点 = ====v-if显示隐藏是将dom元素整个添加 ...
- ueditor中FileUtils.getTempDirectory()找不到
2014-6-27 14:22:25 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() fo ...
- POI写入word doc 03 模板的实例
在使用POI写word doc文件的时候我们必须要先有一个doc文件才行,因为我们在写doc文件的时候是通过HWPFDocument来写的,而HWPFDocument是要依附于一个doc文件的.所以通 ...
- easyui树节点拖拽排序的存储过程
easyui树的拖拽排序功能 easyui树中有拖拽功能 树结构如下: 一个行政区域对应一个单位,一个单位对应多个部门,每个部门下有相关人员,功能要求: (1)行政区域没有子节点,点击text加载部门 ...
- please upgrade your plan to create a new private reposiory
请升级你的计划来创建一个新的私人仓库 提交仓库到github,要公开,除非买他们服务,所以把勾去掉就好了keep this code private
- 【线段树】bzoj3585: mex
非常精妙的线段树题 Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. Input 第一行n,m. 第二行为n个数. 从第三 ...