题目描述:

求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:浮点数加法的更多相关文章

  1. 九度OJ题目1137:浮点数加法 (JAVA)使用BigDecimal四个案例都通过了,但是超时了。

    题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2...Pi.Q1Q2...Qj 对于整数部分,P1P2...Pi是一个非负整数 对于小数部分,Qj不等于0 输入: ...

  2. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  3. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  4. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  5. 九度oj 题目1007:奥运排序问题

    九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...

  6. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  7. 九度OJ题目1105:字符串的反码

    tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...

  8. 九度oj题目1009:二叉搜索树

    题目描述: 判断两序列是否为同一二叉搜索树序列 输入:                        开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...

  9. 九度oj题目1002:Grading

    //不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...

随机推荐

  1. 面向对象super内置函数(转)

    super函数用来解决钻石继承. 一.python的继承以及调用父类成员 父类: class Base(object): def __init__(self): print("base in ...

  2. leetcode395 Longest Substring with At Least K Repeating Characters

    思路: 尺取法. 循环i:1~26,分别计算恰好包含i种字母并且每种字母出现的次数大于等于k个的最长子串长度. 没法直接使用尺取法,因为不满足区间单调性,但是使用如上的方法却是可以的,因为子串中包含的 ...

  3. option标签selected="selected"属性失效的问题

    要在select标签上面加上autocomplete="off"关闭自动完成,不然浏览器每次刷新后将自动选择上一次关闭时的option,这样默认属性selected="s ...

  4. 【数据分析 R语言实战】学习笔记 第十一章 对应分析

    11.2对应分析 在很多情况下,我们所关心的不仅仅是行或列变量本身,而是行变量和列变量的相互关系,这就是因子分析等方法无法解释的了.1970年法国统计学家J.P.Benzenci提出对应分析,也称关联 ...

  5. sublime快捷键mark

    Ctrl+D 选词 (反复按快捷键,即可继续向下同时选中下一个相同的文本进行同时编辑)Ctrl+G 跳转到相应的行Ctrl+J 合并行(已选择需要合并的多行时)Ctrl+L 选择整行(按住-继续选择下 ...

  6. 洛谷 P1363 幻想迷宫

    题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:momo...我们一定能走 ...

  7. mysql Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nona

    1. 操作mysql的时候提示如下错误 [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and cont ...

  8. 动手使用ABAP Channel开发一些小工具,提升日常工作效率

    今天的故事要从ABAP小游戏说起. 中国的ABAP从业者们手头或多或少都搜集了一些ABAP小游戏,比如下面这些. 消灭星星: 扫雷: 来自我的朋友刘梦,公众号"SAP干货铺"里的俄 ...

  9. 数学题 追及相遇—HDOJ1275 人傻需要多做题

    两车追及或相遇问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  10. bfs染色法判定二分图

    #include<iostream> #include<queue> #include<cstring> #include<cstdio> using ...