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 ...
随机推荐
- 【Qt】Qt Linguist介绍【转】
简介 Qt提供了一款优秀的支持Qt C++和Qt Quick应用程序的翻译工具.发布者.翻译者和开发者可以使用这款工具来完成他们的任务. 发布者:承担了全面发布应用程序的责任.通常,他们协调开发者和翻 ...
- 使用 PHP 验证表单数据
使用 PHP 验证表单数据 首先我们对用户所有提交的数据都通过 PHP 的 htmlspecialchars() 函数处理. 当我们使用 htmlspecialchars() 函数时,在用户尝试提交以 ...
- jQuery实现公告文字左右滚动
jQuery实现公告文字左右滚动的代码. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...
- 解析php时间戳与日期的转换
php中时间戳与日期的转换. 实现功能:获取某个日期的时间戳,或获取某个时间的PHP时间戳. strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date( ...
- 2013-07-22 IT 要闻速记快想
### ========================= ### 如何让用户点击广告.观看广告并乐在其中?这个问题的答案精彩纷呈.有的公司开创模式,为点击广告的用户提供优惠券:有的公司想法新奇,让用 ...
- GridView中的荧光棒效果
使用 ASP.NET中的GridView控件的时候会遇到这个效果,当时觉得很神奇,其实就是两句代码的事儿,可是时间长了,有点儿忘了,今天练习一下, 顺便把删除的时候弹出js中的confirm对话框也写 ...
- Python开发【第一篇】Python基础之函数递归
函数递归 递归的本质: 就是一个函数调用另外一个函数. def d(): return '123' def c(): r = d() return r def b(): r = c() return ...
- JSON对象配合jquery.tmpl.min.js插件,手动攒出一个table
jquery.tmpl.min.js 首先下载这个插件 1.绑定json那头的键 //TemplateDDMX 这个是这段JS的ID,这个必须写!!!!!! //${}为json的键的值,必须要填写正 ...
- DataGridView 使用CheckBox选中行
在winform中使用checbox很多.上次那个项目里就用到了,写了一个不太好用,后来翻阅了一下微软提供的样码,我觉得有必要给大家分享一下. // This event handler manual ...
- 在eclipse中使用jax-ws构建webservices服务端和客户端
服务端: package com.yinfu.service; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebServi ...