大明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的更多相关文章

  1. ACM数论之旅11---浅谈指数与对数(长篇)(今天休息,不学太难的数论> 3<)

    c/c++语言中,关于指数,对数的函数我也就知道那么多 exp(),pow(),sqrt(),log(),log10(), exp(x)就是计算e的x次方,sqrt(x)就是对x开根号 pow()函数 ...

  2. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  3. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  4. acm结束了

    最后一场比赛打完了.之前为了记录一些题目,开了这个博客,现在结束了acm,这个博客之后也不再更新了. 大家继续加油!

  5. 关于ACM的总结

    看了不少大神的退役帖,今天终于要本弱装一波逼祭奠一下我关于ACM的回忆. 从大二上开始接触到大三下结束,接近两年的时间,对于大神们来说两年的确算不上时间,然而对于本弱来说就是大学的一半时光.大一的懵懂 ...

  6. 第一届山东省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 ...

  7. 第一届山东省ACM——Balloons(java)

    Description Both Saya and Kudo like balloons. One day, they heard that in the central park, there wi ...

  8. ACM之鸡血篇

    一匹黑马的诞生 故事还要从南京现场赛讲起,话说这次现场赛,各路ACM英雄豪杰齐聚南京,为争取亚洲总舵南京分舵舵主之职位,都使出了看 家本领,其中有最有实力的有京城两大帮清华帮,北大帮,南郡三大派上交派 ...

  9. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

随机推荐

  1. System.IO.Path 操作

    System.IO.Path 分类: C#2011-03-23 10:54 1073人阅读 评论(0) 收藏 举报 扩展磁盘string2010c System.IO.Path提供了一些处理文件名和路 ...

  2. 格伦布编码——rice编码无非是golomb编码M为2^x的特例

    格伦布编码 格伦布编码是一种无失真资料压缩方法,由数学家所罗门·格伦布在1960年代提出. Rice编码 Robert F. Rice提出Rice 编码,是以哥伦布编码为基础做改良而更简易的前置码.R ...

  3. IJ:Idea 常用代码

    ylbtech-IJ:Idea 常用代码 1.返回顶部 1. 1.JeePlus/代码生成器http://localhost:8081/a/login 2.manager/Java基础框架http:/ ...

  4. [Apple开发者帐户帮助]二、管理你的团队(7)管理服务器帐户

    如果在配置机器人以在多个设备上运行应用程序时向团队添加服务器,允许Xcode Server为您管理签名,或者配置机器人以创建iOS App文件,则服务器可以访问您的资产并显示在您的开发人员帐户 您可以 ...

  5. Codeforces 609D 被二分教做人

    传送门:http://codeforces.com/problemset/problem/609/D (如需转载,请注明出处,谢谢O(∩_∩)O) 题意: Nura想买k个小玩意,她手上有 s 个bu ...

  6. 关于网站图片格式 png,jpg,

    小图标用 png 采用无损压缩.可存储透明图片. 适合存储icon, logo 等颜色对比明显,又小的图片. 劣势:索引色数量有限,不适合大图片,颜色层次丰富. 大图片用 jpg 采用了压缩算法,会有 ...

  7. rabbit channel参数

    channel.exchangeDeclare() channel.ExchangeDeclare(string exchange: "cjlTest",string  type: ...

  8. 讲究地使用 List

    本篇旨意在于讨论List的基本用法,不做全面讲解,仅仅涉及构造函数List.Add.RemoveAt 先看看这几个函数的代码 1.构造函数 static readonly T[] _emptyArra ...

  9. 构造函数中this,return的详解

    function Foo(name,age){ this.name=name; this.age=age; } var foo=new Foo("Tom",14); foo.nam ...

  10. 45.4.7 序列:USER_SEQUENCES(SEQ)

    45.4.7 序列:USER_SEQUENCES(SEQ) 要显示序列的属性,可以查询USER_SEQUENCES 数据字典视图.该视图也能用公有同义词SEQ 进行查询.USER_SEQUENCES ...