[九度OJ]1137.浮点数加法
原题链接:http://ac.jobdu.com/problem.php?pid=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
- 题解:
- 我的做法是去小数点,即统一乘以10n次方,这个n是两个数中小数点位数较大的一个,然后用大数相加,最后再把小数点加上,多余的0去掉。代码如下:
#include <cstdio>
#include <string.h>
#include <stdlib.h>
using namespace std;
int n;
char a[];
char b[];
char c[]; int remove(char* a,char c){
char *p;
int pos=;
int i;
for(p=a,i=strlen(a)-; *p!='\0'; p++,i--){
if(*p==c){
pos = i;
char* q;
for(q=p;*q!='\0'; q++){
*q = *(q+);
}
}
}
return pos;
} void add(char* a,char* b,char* c)
{
int i,j,k,max,min,n,temp;
char *s,*pmax,*pmin; max=strlen(a);
min=strlen(b); if (max<min)
{
temp=max;
max=min;
min=temp;
pmax=b;
pmin=a;
}
else
{
pmax=a;
pmin=b;
}
s=(char*)malloc(sizeof(char)*(max+));
s[]='';
//相加,不考虑进位
for (i=min-,j=max-,k=max;i>=;i--,j--,k--)
s[k]=pmin[i]-''+pmax[j];
//长串的多余的加上去
for (;j>=;j--,k--)
s[k]=pmax[j];
for (i=max;i>=;i--)
if (s[i]>'')
{
s[i]-=;
s[i-]++;
}
if (s[]=='')
{
for (i=;i<=max;i++)
c[i-]=s[i];
c[i-]='\0';
}
else
{
for (i=;i<=max;i++)
c[i]=s[i];
c[i]='\0';
}
free(s); }
void addZero(char *a,int n)
{
int len = strlen(a);
int i;
for(i=; i<n; i++)
{
a[len+i] = '';
}
a[len+i] = '\0';
}
void removeLast(char* a)
{
int len = strlen(a);
for(int i=len-; i>=; i--)
{
if(a[i]=='')
a[i] = '\0';
else
break;
}
}
void addPoint(char* a,int n)
{
int i,j;
for(i=strlen(a),j=; j<=n; i--,j++)
{
a[i+] = a[i];
}
a[i+] = '.';
}
int main()
{
// freopen("1137.in","r",stdin);
// freopen("1137.out","w",stdout); scanf("%d",&n);
int apos,bpos;
while(n--)
{
scanf("%s %s",a,b);
apos = remove(a,'.');
bpos = remove(b,'.');
if(apos>bpos)
{
addZero(b,apos-bpos);
add(a,b,c);
addPoint(c,apos);
removeLast(c);
printf("%s\n",c);
}else if(apos<bpos)
{
addZero(a,bpos-apos);
add(a,b,c);
addPoint(c,bpos);
removeLast(c);
printf("%s\n",c);
}else
{
add(a,b,c);
addPoint(c,apos);
removeLast(c);
printf("%s\n",c);
} } return ;
}
[九度OJ]1137.浮点数加法的更多相关文章
- 九度OJ 1137:浮点数加法 (大数运算)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2725 解决:736 题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2...Pi.Q1Q2...Qj ...
- 【九度OJ】题目1137:浮点数加法 解题报告
[九度OJ]题目1137:浮点数加法 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1137 题目描述: 求2个浮点数相加的 ...
- 【九度OJ】题目1435:迷瘴 解题报告
[九度OJ]题目1435:迷瘴 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1435 题目描述: 通过悬崖的yifenfei,又面临 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ 1502 最大值最小化(JAVA)
题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
- 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...
- 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...
- 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但 ...
随机推荐
- 推荐一款java的验证码组件——kaptcha
使用方法: 项目中导入kaptcha-2.3.jar包 在web.xml里面新增: <!-- 登陆验证码Kaptcha --> <servlet> <servlet- ...
- Javascript 5种方法实现过滤删除前后所有空格
第一种:循环检查替换 //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 function trimLeft(s ...
- Oracle11g用户密码过期
今天一早来了,发现部署的网站访问报500,看日志,显示数据库连不上.然后我用sqldeveloper登录同样登不上,于是想到了之前碰到过的一个问题,Oralce11g的新特性:密码180天自动过期.随 ...
- Hadoop 2.4.0完全分布式平台搭建、配置、安装
一:系统安装与配置 Hadoop选择下载2.4.0 http://hadoop.apache.org / http://mirror.bit.edu.cn/apache/hadoop/common/h ...
- portal、portlet、portlet容器三个概念
什么是portal Portlet规范中是这样定义portal的: A portal is a web based application that –commonly- provides perso ...
- sublime text 2 前端编码神器-快捷键与使用技巧介绍
介绍网址:http://www.xuanfengge.com/sublime-text-2-artifact.html
- uva 1475 - Jungle Outpost
半平面交,二分: 注意,题目的点是顺时针给出的: #include<cstdio> #include<algorithm> #include<cmath> #def ...
- 【无聊放个模板系列】HDU 1269 (SCC)
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...
- 李洪强iOS开发之-PCH文件的配置
pch 可以用来存储共享信息,比如设备屏幕的宽度,高度.版本号等等 公用信息 Xcode 老版本会自动为我们创建pch文件,新版本开始不自动创建了,如果需要使用可以自己手动创建 创建完成后可以在里面定 ...
- C语言关键字 - 铁布衫:const 转载
const 描述:相传C世界中出现了一件极品装备const,它能的出现,让天下所有的刺客,黑客都失业了,在它的保护下,所有的变量都可以完好无损. 作用:const是constant的简写,表示海枯石栏 ...