题目:http://acm.hdu.edu.cn/showproblem.php?pid=1753

容易出错的事例:

0.1 0.2

1.88 22.22

1 0.01

大概出错的几个点,做久了思维根本出不来了。。。

3次A过。。。马马虎虎吧,代码太长了,优化回来再说吧

 #include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
using namespace std;
const int M=;
int c[M];
void xsone(int a[],int b[],int lenz)
{
for(int i=;i<lenz;i++)
a[i]=a[i]+b[i];
int temp=;
for(int i=;i<lenz+;i++)
{
a[i]+=temp;
temp=a[i]/;
a[i]%=;
}
int i;
for(i=lenz;i>=;i--)
if(a[i]!=)
break;
if(i<)
printf("");
for(;i>=;i--)
printf("%d",a[i]);
}
int xstwo(int a[],int b[],int lenz)
{
memset(c,,sizeof(c));
for(int i=;i<lenz;i++)
c[i]=a[i]+b[i];
int temp=,flag=;
for(int i=lenz-;i>=;i--)
{
c[i]+=temp;
if(i== && c[i]>=)
flag=;
temp=c[i]/;
c[i]%=;
}
return flag;
} int main()
{
//freopen("in.txt","r",stdin);
char sa[M],sb[M];
memset(sa,,sizeof(sa));
memset(sb,,sizeof(sb));
while(~scanf("%s %s",sa,sb))
{
int lena = strlen(sa);
for(int i=lena;i<M;i++)
sa[i]='';
int lenb = strlen(sb);
for(int i=lenb;i<M;i++)
sb[i]='';
int lenz = lena>lenb ? lena :lenb;
int flag=,sad=,sbd=;
for(int i=;i<lenz;i++)
{
if(sa[i]=='.')
{flag++;sad=i;}
if(sb[i]=='.')
{flag++;sbd=i;}
}
//printf("%d\n",flag);
if(flag==)
{
int a[M],b[M];
memset(a,,sizeof(a));
memset(b,,sizeof(b));
for(int i=;i<lena;i++)
a[lena--i]=sa[i]-'';
for(int i=;i<lenb;i++)
b[lenb--i]=sb[i]-'';
xsone(a,b,lenz);
printf("\n");
}
else if(flag==)
{
if(sad)
{
int a[M],b[M];
memset(a,,sizeof(a));
memset(b,,sizeof(b));
for(int i=;i<sad;i++)
a[sad--i]=sa[i]-'';
for(int i=;i<lenb;i++)
b[lenb--i]=sb[i]-'';
lenz = sad>lenb ? sad : lenb;
xsone(a,b,lenz);
for(int i=sad;i<lena;i++)
printf("%c",sa[i]);
printf("\n");
}
if(sbd)
{
int a[M],b[M];
memset(a,,sizeof(a));
memset(b,,sizeof(b));
for(int i=;i<lena;i++)
a[lena--i]=sa[i]-'';
for(int i=;i<sbd;i++)
b[sbd--i]=sb[i]-'';
lenz = lena>sbd ? lena : sbd;
xsone(a,b,lenz);
for(int i=sbd;i<lenb;i++)
printf("%c",sb[i]);
printf("\n");
}
}
else
{
int a[M],b[M];
memset(a,,sizeof(a));
memset(b,,sizeof(b));
//printf("%d\n",lenz);
int t=;
for(int i=sad+;i<lena;i++)
a[t++]=sa[i]-'';
t=;
for(int i=sbd+;i<lenb;i++)
b[t++]=sb[i]-'';
int salend=lena-sad-;
int sblend=lenb-sbd-;
lenz = salend>sblend ? salend : sblend;
//printf("%d",lenz);
int dright=;
dright = xstwo(a,b,lenz);
//printf("%d\n",dright);
// int i;
int lenz2 = lenz;
// for(i=0;i<lenz;i++)
// printf("%d",c[i]);
// printf("\n"); memset(a,,sizeof(a));
memset(b,,sizeof(b));
for(int i=;i<sad;i++)
a[sad--i]=sa[i]-''; if(dright == )//进位
a[]++;
for(int i=;i<sbd;i++)
b[sbd--i]=sb[i]-'';
lenz = sad>sbd ? sad :sbd;
xsone(a,b,lenz);
int i,h=,j;
for(i=lenz2;i>=;i--)
if(c[i]!=)
break;
h=i;
if(h>=)
{
printf(".");
for(j=;j<=h;j++)
printf("%d",c[j]);
}
printf("\n");
}
}
return ;
}

hdu 1753 大明A+B的更多相关文章

  1. hdu 1753 大明A+B(高精度小数加法)

    //深刻认识到自己的粗心,为此浪费了一天.. Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明". 这时他已经不是 ...

  2. HDU 1753 大明A+B (大正小数加法、字符串处理)

    大明A+B Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  3. HDU 1753 大明A+B(字符串模拟,简单题)

    简单题,但要考虑一些细节: 前导0不要,后导0不要,小数长度不一样时,有进位时,逆置处理输出 然后处理起来就比较麻烦了. 题目链接 我的代码纯模拟,把小数点前后分开来处理,写的很繁杂,纯当纪念——可怜 ...

  4. hdu 1753 大明A+B(大数)

    题意:小数大数加法 思路:大数模板 #include<iostream> #include<stdio.h> #include<string.h> using na ...

  5. hdoj 1753 大明A+B 高精度/java

    大明A+B Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  6. HDOJ 1753 大明A+B

    JAVA大数.... 大明A+B Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. [HDOJ] 1753.大明A+B (大数加法)

    Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明". 这时他已经不是那个只会做100以内加法的那个"小明 ...

  8. 【HDOJ】1753 大明A+B

    注意数据格式,可以是整数,并且注意输出最简化浮点数. #include <stdio.h> #include <string.h> #define MAXNUM 420 cha ...

  9. HDU高精度总结(java大数类)

      HDU1002   A + B Problem II [题意]大数相加 [链接]http://acm.hdu.edu.cn/showproblem.php?pid=1002 Sample Inpu ...

随机推荐

  1. 在 linux x86-64 模式下分析内存映射流程

    前言 在上一篇中我们分析了 linux 在 x86-32 模式下的虚拟内存映射流程,本章主要继续分析 linux 在 x86-64 模式下的虚拟内存映射流程. 讨论的平台是 x86-64, 也可以称为 ...

  2. Git的学习总结和使用时遇到的问题。

                        git 是一款非常强大的版本控制工具,现在市场占有率应该是一家独大了,以前用svn的童鞋估计都转投git阵营了吧   加上很多公司也用git管理自己的项目,所以 ...

  3. Linux操作杂记

    centos7修改默认运行等级 查看当前默认运行等级: systemctl get-dafault 修改默认运行等级为5: systemctl set-default graphical.target ...

  4. js设计模式(10)---观察者模式

    0.前言 最近好多烦心事,由于自己的拖延懒惰造成事情堆积如山,看来最近得勤快些了,不然真的会死的很惨. 1.观察者模式是什么 又叫做发布者订阅者模式(publish/Subscribe),用来确定对象 ...

  5. Silverlight 中DataGrid中全选与非全选问题

    问题:当点击全选时,全选所有的复选框,但是滚动屏幕时,却复选框就会取消选中 一.解决方法(将要展示的实体数据模型添加bool属性,在数据绑定时添加click时间,盘带选中的状态,就可以了) 1. xa ...

  6. rinetd 安装使用

    1 下载解压: wget http://www.boutell.com/rinetd/http/rinetd.tar.gz tar zxvf rinetd.tar.gz 2 手动建立目录 mkdir ...

  7. Android API Level与sdk版本对照表

    API等级1: Android 1.0 API等级2: Android 1.1 Petit Four 花式小蛋糕 API等级3: Android 1.5 Cupcake 纸杯蛋糕 API等级4: An ...

  8. Laravel 5 基础(三)- 向视图传送数据

    我们在Routes.php中新建一个路由 Route::get('about', 'PagesController@about'); 在浏览器中浏览会获得一个错误,错误信息仅仅是一个提示信息,缺少细节 ...

  9. 交换a和b

    有点儿类似脑筋急转弯.做个标记先. 网上还看到比较奇特的,一句代码就OK的: 注:要都是int类型才行. 还有比较奇特的: 还有一个:

  10. unity--IOC框架资料整理

    今天在网上找了一些unity资料研究,出了好多问题,编译无法通过,经人指点总算成功编译运行,做个笔记,整理如下: 一.下载unity: 二.在项目中添加Microsoft.Practices.Unit ...