题目: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. 利用rsyslog 对linux 操作进行审计

    环境:客户端和服务端都需要安装rsyslog服务 rsyslog  server端 cd /etc/rsyslog.d/ cat server.conf $ModLoad imtcp $InputTC ...

  2. YCM的安装与配置

    花了好几天的时间,总算把YCM装上了.期间遇到了各种问题,主要还是因为刚进linux,对linux环境不熟, 命令资料等查了半天.当然,YCM也普遍被认为是一种安装配置复杂,但使用起来超简单的插件. ...

  3. System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本

    说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.ServiceModel.FaultEx ...

  4. Android 与 Webservice 的快速保存

    前面写了一篇android对sqllite的快速保存博客,今天我们来看看android与webservice的交互,相信很多有经验的人自然就想到了soap.但是如果在小型项目中,具有大材小用之嫌.实际 ...

  5. 《.NET简单企业应用》项目开发环境

    项目开始,开发团队需要构建一套开发环境,主要包含:开发工具.代码管理/版本控制系统.任务和Bug管理系统和持续集成(CI)系统.本文主要列举项目开发中经常使用的开发工具和第三方库. 本文所列工具根据前 ...

  6. Oracle体系结构知识点的运用

    体系结构方面的优化问题: 设数据库很大,访问量非常高,共享池很小:这样共享池里面就无法存储很多解析过得sql语句,导致很多硬解析,这样数据库就非常缓慢.这个时候要加大共享池.如果是自动管理,就加大SG ...

  7. GDB调试详解

    GDB是一个由GNU开源组织发布的.UNIX/LINUX操作系统下的.基于命令行的.功能强大的程序调试工具. GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调 ...

  8. linux内核中的get_user和put_user

    linux内核中的get_user和put_user 在 内核空间和用户空间交换数据时,get_user和put_user是两个两用的函数.相对于copy_to_user和 copy_from_use ...

  9. Linux 配置本地yum源

    Linux 配置无网络状态利用yum安装软件 在有网络的情况下安装软件只需一条yum install xxx命令,例如安装gcc只需一条指令:yum install gcc  那么在没有网络的情况下该 ...

  10. 特征值分解,奇异值分解(SVD)

    特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法.两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征. 1. 特征值: 如果说一个向 ...