题目描述:

求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. Notepad++设计Tab制表符为4个空格

    Notepad++中,常常需要将一个Tab制表符转换成4个空格.这种情况大多发生在对空白检查严格的情况下,比如Python程序. 设置 → 首选项 → 制表符设置 → 勾选“ 转换为空格 ”.

  2. java.util.concurrent中的常用组件

    一. CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. CountDownLatch的一个非常典型的应用场景是:有一个任务想要往下执 ...

  3. 基于Vmware player的Windows 10 IoT core + RaspberryPi2安装部署

    本文记录了基于Vmware Player安装Windows10和VS2015开发平台的过程,以及如何在RaspberryPi2.0上启动Windows10 IoT core系统,并通过一个简单的hel ...

  4. ubuntu 14.04 离线部署docker

    hett@hett-virtual-machine:~$ lsb_release -aNo LSB modules are available.Distributor ID:    UbuntuDes ...

  5. Integer比较浅析

    //Integer 型比较假如是使用 == ,只能比较数值为-128~127数值; 在这个范围内使用的是自动装箱拆箱: //.intValue()使用这个需要确认属性不为null; //equals( ...

  6. 【工具篇】在.Net中实现HTML生成图片或PDF的几种方式

    前段时间由于项目上的需求,要在.Net平台下实现把HTML内容生成图片或PDF文件的功能,特意在网上研究了几种方案,这里记录一下以备日后再次使用.当时想着找一种开发部署都比较清爽并且运行稳定的方案,但 ...

  7. 想转行做web前端工程师,必学这5大技能!知道是那些吗?

    web前端工程师是近几年才发展出来的新兴职业,也是目前火爆且高薪的职业. 大需求的市场环境下,出现了越来越多的人群转行做web前端工程师,如设计师.后台程序员.网虫.大学其他专业.策划.编辑等等. 要 ...

  8. Delphi 中内存映射对于大文件的使用

    这篇文章主要介绍了Delphi 中内存映射对于大文件的使用的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下 Delphi 中内存映射对于大文件的使用 平时很少使用大文件的内存映射,碰巧遇到了 ...

  9. 解决微信小程序要求的TLS版本必须大于等于1.2的问题(windows2008服务器)

    开始->运行->输入 PowerShell 复制这段代码粘入弹出的dos窗口内 # Enables TLS 1.2 on windows Server 2008 R2 and Window ...

  10. HTML5拖放(drag和drog)作品

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...