[九度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 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但 ...
随机推荐
- ACE 6.2.0 win7_64 编译
Windows平台 ~ Microsoft Visual Studio 1) 下载ACE源码 ACE官方网址:http://www.cs.wustl.edu/~schmidt/ACE.h ...
- Linux硬链接和符号链接(转)
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接] 硬连接指通过索引节点来进行连接.在Li ...
- PL/SQL — 函数
函数通常用于返回特定的数据.其实质是一个有名字的PL/SQL块,作为一个schema对象存储于数据库,可以被反复执行.函数通常被作为一个表达式来调用或存储过程的一个参数,具有返回值. 一.建立函数 ...
- “0x5003eaed” 指令引用的“0x00000000”内存。该内存不能为“read”
一.问题描述与原因分析 1.问题描述 使用VC6.0,在工具栏点击“打开文件”或者“添加文件到项目”的图标时,提示如题的错误. 2.原因分析 微软的VC6.0与office2007冲突问题. 二.解决 ...
- 10.MVC框架开发(Ajax应用)
1.MVC自带的Ajax应用, 使用步骤: 第一步,引入js框架 <script src="../../Scripts/jquery-1.4.4.js" type=" ...
- 长达半年的苹果发布会:亮点与槽点(iPhone5s,iPhone5c)
不知出于什么原因,今天凌晨召开的苹果发布会并没有视频直播,所以大家都守着The Verge家的图文直播.结果,苹果再一次用事实证明了他们没有保密体系,或者,故意没有保密体系. 整场发布会正经的亮点如下 ...
- Docker容器中运行ASP.NET Core
在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了. ...
- iOS多线程常用类说明--备用参考
iOS的多线程,涉及到如下一些类,这里集中做个介绍,免得混淆. 1.NSTimer 很显然,这是定时器类 2.NSTask iOS 不支持 NSTask 在很多并发操作的时候,多线程太耗资源,也太危险 ...
- res\menu\main.xml:6: error: No resource identifier found for attribute 'showAsAction' in package 'com.xxx.xxxx'
res\menu\main.xml:6: error: No resource identifier found for attribute 'showAsAction' in package 'co ...
- HDU 4540 威威猫系列故事——打地鼠(DP)
点我看题目 题意 :中文题,不详述. 思路 : 状态转移方程 dp[ i ][ j ] = dp[i-1][k] + fabs(a[ i ][ j ]-a[i-1][k]) ; dp[i][j]代表的 ...