【ACM】hdu_zs1_1005_大明A+B _201307291603
大明A+B
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 30 Accepted Submission(s) : 7
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。
现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。
Input
本题目包含多组测试数据,请处理到文件结束。
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。
Output
请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。
Sample Input
1.1 2.9
1.1111111111 2.3444323343
1 1.1
Sample Output
4
3.4555434454
2.1
Author
#include <stdio.h>
#include <string.h>
#define MAX_LEN 400
char str1[MAX_LEN+40];
char str2[MAX_LEN+40];
int an1[MAX_LEN+40];
int an2[MAX_LEN+40];
int an3[MAX_LEN+40];
int an4[MAX_LEN+40];
int main()
{
while(scanf("%s%s",str1,str2)!=EOF)
{
int i,j,k,len1,len2;
memset(an1,0,sizeof(an1));
memset(an2,0,sizeof(an2));
memset(an3,0,sizeof(an3));
memset(an4,0,sizeof(an4));
len1=strlen(str1);
for(i=0;(i<len1)&&(str1[i]!='.');i++);
k=i;
for(j=0,i=k-1;i>=0;i--)
an1[j++]=str1[i]-'0';
for(j=1,i=k+1;i<len1;i++)
an3[j++]=str1[i]-'0';
len2=strlen(str2);
for(i=0;(i<len2)&&(str2[i]!='.');i++);
k=i;
for(j=0,i=k-1;i>=0;i--)
an2[j++]=str2[i]-'0';
for(j=1,i=k+1;i<len2;i++)
an4[j++]=str2[i]-'0';
for(i=MAX_LEN-1;i>=0;i--)
{
an3[i]+=an4[i];
if(an3[i]>=10)
{
an3[i]-=10;
an3[i-1]++;
}
}
if(an3[0]>0)
an1[0]++;
for(i=0;i<MAX_LEN;i++)
{
an1[i]+=an2[i];
if(an1[i]>=10)
{
an1[i]-=10;
an1[i+1]++;
}
}
for(i=MAX_LEN;(i>0)&&(an1[i]==0);i--);
for(;i>=0;i--)
printf("%d",an1[i]);
for(i=MAX_LEN;(i>0)&&(an3[i]==0);i--);
if(i>=1) printf(".");
for(j=1;j<=i;j++)
printf("%d",an3[j]);
printf("\n");
}
return 0;
}
代码加注释
#include <stdio.h>
#include <string.h>
#define MAX_LEN 400
char str1[MAX_LEN+40];
char str2[MAX_LEN+40];
int an1[MAX_LEN+40];
int an2[MAX_LEN+40];
int an3[MAX_LEN+40];
int an4[MAX_LEN+40];
int main()
{
while(scanf("%s%s",str1,str2)!=EOF)
{
int i,j,k,len1,len2;
memset(an1,0,sizeof(an1));
memset(an2,0,sizeof(an2));
memset(an3,0,sizeof(an3));
memset(an4,0,sizeof(an4));
len1=strlen(str1);
for(i=0;(i<len1)&&(str1[i]!='.');i++);
k=i;//找出小数点的位置 ,并标记
for(j=0,i=k-1;i>=0;i--)
an1[j++]=str1[i]-'0';//处理整数部分
for(j=1,i=k+1;i<len1;i++)
an3[j++]=str1[i]-'0';//处理小数部分
len2=strlen(str2);
for(i=0;(i<len2)&&(str2[i]!='.');i++);
k=i;
for(j=0,i=k-1;i>=0;i--)
an2[j++]=str2[i]-'0';
for(j=1,i=k+1;i<len2;i++)
an4[j++]=str2[i]-'0';
for(i=MAX_LEN-1;i>=0;i--)
{
an3[i]+=an4[i];
if(an3[i]>=10)
{
an3[i]-=10;
an3[i-1]++;
}
}//小数部分相加
if(an3[0]>0)
an1[0]++;//小数部分是否要向整数部分进一
for(i=0;i<MAX_LEN;i++)
{
an1[i]+=an2[i];
if(an1[i]>=10)
{
an1[i]-=10;
an1[i+1]++;
}
}//整数部分相加
for(i=MAX_LEN;(i>0)&&(an1[i]==0);i--);
for(;i>=0;i--)
printf("%d",an1[i]);//输出整数部分
for(i=MAX_LEN;(i>0)&&(an3[i]==0);i--);
if(i>=1) printf(".");//如果有小数,则输出小数点,如果没有则不输出
for(j=1;j<=i;j++)
printf("%d",an3[j]);//输出整数部分
printf("\n");
}
return 0;
}
//如输入12.3和34.56,整数部分是21+43,然后倒着输出,小数部分是30+56,从最后的0一直加到最前面,然后正着输出
【ACM】hdu_zs1_1005_大明A+B _201307291603的更多相关文章
- ACM数论之旅11---浅谈指数与对数(长篇)(今天休息,不学太难的数论> 3<)
c/c++语言中,关于指数,对数的函数我也就知道那么多 exp(),pow(),sqrt(),log(),log10(), exp(x)就是计算e的x次方,sqrt(x)就是对x开根号 pow()函数 ...
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- acm结束了
最后一场比赛打完了.之前为了记录一些题目,开了这个博客,现在结束了acm,这个博客之后也不再更新了. 大家继续加油!
- 关于ACM的总结
看了不少大神的退役帖,今天终于要本弱装一波逼祭奠一下我关于ACM的回忆. 从大二上开始接触到大三下结束,接近两年的时间,对于大神们来说两年的确算不上时间,然而对于本弱来说就是大学的一半时光.大一的懵懂 ...
- 第一届山东省ACM——Phone Number(java)
Description We know that if a phone number A is another phone number B’s prefix, B is not able to be ...
- 第一届山东省ACM——Balloons(java)
Description Both Saya and Kudo like balloons. One day, they heard that in the central park, there wi ...
- ACM之鸡血篇
一匹黑马的诞生 故事还要从南京现场赛讲起,话说这次现场赛,各路ACM英雄豪杰齐聚南京,为争取亚洲总舵南京分舵舵主之职位,都使出了看 家本领,其中有最有实力的有京城两大帮清华帮,北大帮,南郡三大派上交派 ...
- 【codeforces 415D】Mashmokh and ACM(普通dp)
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
随机推荐
- linux下dd命令详解【转】
本文转载自:http://www.cnblogs.com/licheng/articles/1116492.html 名称: dd 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 ...
- Mybatis 碰到的一些问题
1. SQL语句参数无法获取:nested exception is org.apache.ibatis.reflection.ReflectionException: There is no get ...
- poj--1753--Flip Game(dfs好题)
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37201 Accepted: 16201 Descr ...
- B5090 组题 二分答案
bzoj有毒,看不了自己哪错了...根本没法debug. 我到现在还是不知道自己代码为什么会T,二分次数也加限制了,但是还是T...救命啊!!! 题干: Description 著名出题人小Q的备忘录 ...
- javascript 将变量值作为对象属性 获取对象对应的值
例子 var var="name"; var objname="obj"; objname=objname+"."+var; alert(e ...
- Laravel5.1学习笔记6 响应
基本响应 附加头信息到响应 附加Cookie到响应 其他响应 View视图响应 JSON响应 File下载 重定向 重定向到命名路由 重定向到控制器Action 附带闪回Session数据重定向 响应 ...
- 获取XML里指定的节点内容信息
HttpContent bw = new StringContent(StrXml, Encoding.UTF8, "application/Xml"); var Msg = aw ...
- Deutsch lernen (01)
Was macht Martin? - Um 8.00 Uhr steht martin auf. aufstehen - aufstand - ist aufgestanden 起床 Um 6 Uh ...
- 创建dml触发器
-实现删除学生信息时把该学生的成绩记录全部清空 --判断触发器是否存在 if exists(select * from sysobjects where name = 'delete_student' ...
- AI:模式识别的数学表示(集合—函数观点)
前言: 模式识别的定义,参考:模式识别两种方法:知识和数据 .百科定义:模式识别(英语:Pattern Recognition),就是通过计算机用数学技术方法来研究模式的自动处理和判读.我们把环境与客 ...