hdu 1753 大明A+B
题目: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的更多相关文章
- 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 1753 大明A+B(大数)
题意:小数大数加法 思路:大数模板 #include<iostream> #include<stdio.h> #include<string.h> using na ...
- hdoj 1753 大明A+B 高精度/java
大明A+B Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDOJ 1753 大明A+B
JAVA大数.... 大明A+B Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- [HDOJ] 1753.大明A+B (大数加法)
Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明". 这时他已经不是那个只会做100以内加法的那个"小明 ...
- 【HDOJ】1753 大明A+B
注意数据格式,可以是整数,并且注意输出最简化浮点数. #include <stdio.h> #include <string.h> #define MAXNUM 420 cha ...
- HDU高精度总结(java大数类)
HDU1002 A + B Problem II [题意]大数相加 [链接]http://acm.hdu.edu.cn/showproblem.php?pid=1002 Sample Inpu ...
随机推荐
- document.write() 和 document.writeln() 区别
写javascript页面时,看到这两个函数,第一感觉应该是一个换行,一个不换行, 但是实际使用时是一样的(writeln()函数在浏览器页面会多一个空格而不是换行). 简单搜索查阅了下: 查看源 d ...
- Android之“Unfortunately,xxx has stopped!”
初学Android遇到Unfortunately,xxx has stopped!真是一件让人头疼的事情,下面就遇到的两种可能情况给出解决方案.通常遇到的情况在于由一个Activity跳转至另一个Ac ...
- win7 64位下jboss配置
1.下载Jboss7 下载地址:http://www.jboss.org/jbossas/downloads/ 2.解压到一个目录,如D:\Working,最终路径是D:\Working\jboss- ...
- Array和ArrayList的异同点【转】
相信数组是大家在编程最常使用的,不论任何语言都存在数组这样的数据结构,由于C#语言是完全面向对象的,所以在C#中的数组也是对象,实际上就是Array类的实例,Array类的使用可以说是使用最频繁的,只 ...
- putty工具常见设置
Putty 工具主要是用于在 windows 环境下连接 linux 服务器的一个命令行工具,可以在此客户端中进行编译.svn代码修改 更新 提交等动作.LD主要是用它来干这个的. 工作环境的改变: ...
- ios/mac/COCOA系列 -- UIALertVIew 学习笔记
最近在学习ios开发,学习的书籍<ios7 Pragramming cookbook>,做笔记的目的以后方便查看.笔记形式是小例子,将书上的例子书写完整. UIAlertViewClass ...
- APACHE 403 FORBIDDEN错误的解决办法之一
打开 apache的配置文件httpd.conf,找到这段代码: Options FollowSymLinksAllowOverride NoneOrder deny,allowDeny from a ...
- jquery-2.0.3.js和jquery-2.0.3.min.js的区别
两个文件的作用是完全一样的. jquery-2.0.3.js里的代码是没有进行处理的原代码,适合于人们阅读与研究. jquery-2.0.3.min.js里的代码进行过特殊的处理, 如变量的名称基本都 ...
- 从状态转移看:载波侦听多路访问/冲突避免(CSMA/CA)
CSMA/CA是写入IEEE802.11的无线网络MAC层标准协议,相信看到这篇文章的读者都知道它是用来做什么的.但许多短文对这个协议的解释都有所缺乏,因此本文用状态转换图的形式详细说明协议的工作流程 ...
- [原创汉化]linux前端神器 WebStorm8 汉化
只汉化了linux版本 因为linux的工具没win多 不过汉化应该都通用的,自行尝试下. 汉化的不是很完全.有时间放出完全版本来.汉化是个体力活 转载随易,汉化不易,且转且注明 截图: http:/ ...