九度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 ...
随机推荐
- poj2135 最小费用流
添加超级源点(与点1之间的边容量为2,权值为0)和超级汇点(与点N之间的边容量为2,权值为0),求流量为2的最小费用流.注意是双向边. #include <iostream> #inclu ...
- maven 3.3.9版本下载地址
请使用迅雷下载 http://www-us.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.zip
- Azure 项目构建 – 构建直播教学系统之媒体服务篇
本课程主要介绍如何在 Azure 平台上快速构建和部署基于 Azure 媒体服务的点播和直播教学系统, 实践讲解如何使用 Azure 门户创建媒体服务, 配置视频流进行传输,连接 CDN 加速等. 具 ...
- Sublime Text3括号配对与代码包围效果BracketHighlighter
就这么看json等配置文件,太难了,我们需要括号匹配插件BracketHighlighter,但是装完以后只有下划线提示不明显,需要配置 Bracket Settings-Default 文件 ...
- 转载:使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...
- 栈的应用——Rails
一.题目描述 某城市有一个火车站,有n节车厢从A方向驶入车站,按进站顺序编号为1~n,经中转站C驶向B.中转站C,这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须以相反的顺序驶出C ...
- 获取显示设备的名称及PNPDeviceID
实现效果: 知识运用: ManagementObjectSearcher类和ManagementObject类 实现代码: private void button1_Click(object send ...
- Php教程
第一部:PHP基础部分(131集,发布完毕) 讲html与PHPt基础,PHP环境搭建,与留言本编写. 下载地址:① HTML视频[2014新版] http://pan.baidu.com/s/1ve ...
- C++系统学习之六:函数
1.函数基础 典型的函数定义包括:返回类型.函数名.由0个或多个形参组成的列表以及函数体. 2.参数传递 形参初始化的机理和变量初始化一样. 有两种方式:引用传递和值传递 2.1 传值参数 当形参是非 ...
- python私有成员与公有成员(_和__)
python并没有对私有成员提供严格的访问保护机制. 在定义类的成员时,如果成员名以两个下划线“__”或更多下划线开头而不以两个或更多下划线结束则表示是私有成员. 私有成员在类的外部不能直接访问,需要 ...