hdu 1753 大明A+B(大数)
题意:小数大数加法
思路:大数模板
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std; void plu(char *a,char *b){//注意存储方式:整数倒着存,小数正着存,看代码需注意
int i,j,k,lena,lenb,lena1,lena2,lenb1,lenb2,lenc1,lenc2;//len分别对应相应数组的长度
char a1[],a2[],b1[],b2[],c1[],c2[];//a1、a2为第一个数的整数部分、小数部分
lena=strlen(a);//b1、b2为第二个数;c1、c2为结果
lenb=strlen(b);
//取出第1个数的整数部分、小数部分
for(i=;i<lena;++i)
if(a[i]=='.')
break;
lena1=i;
lena2=lena-i-;
for(j=i-,k=;j>=;--j)
a1[k++]=a[j];
for(j=i+,k=;j<lena;++j)
a2[k++]=a[j]; //取出第2个数的整数部分、小数部分
for(i=;i<lenb;++i)
if(b[i]=='.')
break;
lenb1=i;
lenb2=lenb-i-;
for(j=i-,k=;j>=;--j)
b1[k++]=b[j];
for(j=i+,k=;j<lenb;++j)
b2[k++]=b[j]; //开始计算
int up=;//进位
//计算小数部分
if(lena2>lenb2){
lenc2=lena2;
for(i=lena2-;i>=lenb2;--i)
c2[i]=a2[i];
for(;i>=;--i){
c2[i]=a2[i]+b2[i]-''+up;
if(c2[i]>''){
up=;
c2[i]-=;
}
else up=;
}
}
else{
lenc2=lenb2;
for(i=lenb2-;i>=lena2;--i)
c2[i]=b2[i];
for(;i>=;--i){
c2[i]=a2[i]+b2[i]-''+up;
if(c2[i]>''){
up=;
c2[i]-=;
}
else up=;
}
}
while(c2[lenc2-]==''&&lenc2>=)--lenc2;//去除后面多余的0
//计算整数部分
if(lena1>lenb1){
lenc1=lena1;
for(i=;i<lenb1;++i){
c1[i]=a1[i]+b1[i]-''+up;
if(c1[i]>''){
up=;
c1[i]-=;
}
else up=;
}
for(;i<lena1;++i){
c1[i]=a1[i]+up;
if(c1[i]>''){
up=;
c1[i]-=;
}
else up=;
}
}
else{
lenc1=lenb1;
for(i=;i<lena1;++i){
c1[i]=a1[i]+b1[i]-''+up;
if(c1[i]>''){
up=;
c1[i]-=;
}
else up=;
}
for(;i<lenb1;++i){
c1[i]=b1[i]+up;
if(c1[i]>''){
up=;
c1[i]-=;
}
else up=;
}
} if(up==)printf("");//最后有进位 for(i=lenc1-;i>=;--i)
printf("%c",c1[i]); if(lenc2>){
printf(".");
for(i=;i<lenc2;++i)
printf("%c",c2[i]);
}
printf("\n");
} int main(){
char a[],b[];
while(~scanf("%s%s",a,b))
plu(a,b);
return ;
}
hdu 1753 大明A+B(大数)的更多相关文章
- hdu 1753 大明A+B
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1753 容易出错的事例: 0.1 0.2 1.88 22.22 1 0.01 大概出错的几个点,做久了思维根 ...
- hdu 1753 大明A+B(高精度小数加法)
//深刻认识到自己的粗心,为此浪费了一天.. Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明". 这时他已经不是 ...
- HDU 1753 大明A+B (大正小数加法、字符串处理)
大明A+B Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 1753 大明A+B(字符串模拟,简单题)
简单题,但要考虑一些细节: 前导0不要,后导0不要,小数长度不一样时,有进位时,逆置处理输出 然后处理起来就比较麻烦了. 题目链接 我的代码纯模拟,把小数点前后分开来处理,写的很繁杂,纯当纪念——可怜 ...
- HDU高精度总结(java大数类)
HDU1002 A + B Problem II [题意]大数相加 [链接]http://acm.hdu.edu.cn/showproblem.php?pid=1002 Sample Inpu ...
- [HDOJ] 1753.大明A+B (大数加法)
Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明". 这时他已经不是那个只会做100以内加法的那个"小明 ...
- HDU 1041 Computer Transformation (简单大数)
Computer Transformation http://acm.hdu.edu.cn/showproblem.php?pid=1041 Problem Description A sequenc ...
- hdu 4873 ZCC Loves Intersection(大数+概率)
pid=4873" target="_blank" style="">题目链接:hdu 4873 ZCC Loves Intersection ...
- 【hdoj_1753】大明A+B(大数)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1753 本题要求是,进行多位的小数加法,由于位数很多,所以不能用double类型存储,可以用字符串存储,然后 ...
随机推荐
- Redis 数据结构解析和命令指南
命令參考文档:redis commands - 你或许已经知道Redis并非简单的key-value存储.实际上他是一个数据结构server.支持不同类型的值. 也就是说.你不必只把字符串当作键所指向 ...
- 【经验之谈】适合学习的IT教程站点列表
① CSDN http://www.csdn.net/ ② gitHub https://github.com/ ③ 极客学院 http://www.jikexueyuan.com/ ...
- Java Unsafe类
参考了这篇文章:http://blog.csdn.net/aesop_wubo/article/details/7537278 <JAVA并发编程学习笔记之Unsafe类> Unsafe开 ...
- 您也使用托管C++吗? 【转】
http://blog.csdn.net/Muf/article/details/656920 转向.NET后,手头上往往仍有旧的模块要重用.也许这些模块是Delphi写的,也许是C/C++写的,或者 ...
- ruby简单的基础 4
后缀标点符号 =结尾假设方法名字以=结尾的,那么在调用此方法时能够省略这个=. ?结尾作为一个实用惯例,那些返回布尔值的方法通常都有一个以问号结尾的名字. .结尾这个命名惯例通常时对两种方法区分:以感 ...
- tomcat7设置usernamepassword
因为tomcat是绿色版.今天想在网页上管理项目,却发现没实username和password.打开tomcat-users.xml文件全都是凝视.如图: 将例如以下代码拷贝到tomcat-users ...
- thrift的使用及遇到的问题
centos 系统安装官方文档:http://thrift.apache.org/docs/install/centos 一.按该文档安装出现了一系列的问题,记录如下: 1.安装thrift时./bo ...
- iOS开发UI篇—懒载入
iOS开发UI篇-懒载入 1.懒载入基本 懒载入--也称为延迟载入,即在须要的时候才载入(效率低,占用内存小).所谓懒载入,写的是其get方法. 注意:假设是懒载入的话则一定要注意先推断是否已经有了. ...
- Mysql多线程性能测试工具sysbench 安装、使用和测试
From:http://www.cnblogs.com/zhoujinyi/archive/2013/04/19/3029134.html 摘要: sysbench是一个开源的.模块化的.跨 ...
- ffmpeg 视频教程 添加水印附源码
本文主要讲述如何利用Ffmpeg向视频文件 添加水印这一功能,文中最后会给出源代码下载地址以及视频 下载地址,视频除了讲述添加水印的基本原理以及代码实现,还提到了要注意的一些地方,因为直接运行 dem ...