HDU1753: 大明A+B

大明A+B

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5533    Accepted Submission(s): 1870

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
  1 /*
  2 带小数点的大数加法
  3 思路清晰简单,几分钟就想清楚
  4 但敲代码1个多小时,改错又是1个半小时 汗……
  5 要提高敲键盘的速度以及正确率啊,还有就是敲之前一定要想清楚
  6 */
  7 
  8 #include <iostream>
  9 #include <string.h>
 10 #include <stdio.h>
 11 #include <math.h>
 12 using namespace std;
 13 const int MAX=1000;
 14 char que[3][MAX];  //存入初始字符串
 15 int data[3][MAX];  //存入字符串转换过来的数据
 16 int answer[MAX];  //最后的答案
 17 int main()
 18 {
 19     int len[3];  //两字符串长度
 20     int dian[3]; //字符串转换成实数后小数点的位置
 21     while(scanf("%s%s",que[1],que[2])!=EOF)
 22     {
 23         memset(data,0,sizeof(data));
 24         memset(answer,0,sizeof(answer));
 25         len[1]=strlen(que[1])-1;
 26         len[2]=strlen(que[2])-1;
 27         //printf("len    %d  %d\n",len[1],len[2]);
 28          //printf("%s    %s\n",que[1],que[2]);
 29         dian[1]=-1;
 30         dian[2]=-1;
 31 
 32         //for循环将字符串转换成实数,并找出小数点的位置
 33         for(int i=1;i<3;i++)
 34             for(int j=len[i];j>=0;j--)
 35             {
 36                 if(que[i][j]=='.')
 37                    dian[i]=len[i]-j;
 38                 else
 39                    data[i][len[i]-j]=que[i][j]-'0';
 40             }
 41         /*
 42         检验数据的转换是否完成以及小数点的位置
 43         for(int i=0;i<=len[1];i++)
 44           printf("%d   ",data[1][i]);
 45           printf("\n");
 46         for(int i=0;i<=len[2];i++)
 47           printf("%d   ",data[2][i]);
 48           printf("\n");
 49         printf("%d   %d\n",dian[1],dian[2]);
 50         */
 51 
 52         //将两个实数的小数点对齐
 53         int sub;
 54         if(dian[1]>dian[2])
 55         {
 56             sub=dian[1]-dian[2];
 57             for(int j=len[2]+sub;j>=0;j--)
 58             {
 59                 if(j>=sub)
 60                     data[2][j]=data[2][j-sub];
 61                 else
 62                     data[2][j]=0;
 63                 dian[2]=dian[1];
 64             }
 65         }
 66         if(dian[2]>dian[1])
 67         {
 68             sub=dian[2]-dian[1];
 69             for(int j=len[1]+sub;j>=0;j--)
 70             {
 71                 if(j>=sub)
 72                     data[1][j]=data[1][j-sub];
 73                 else
 74                     data[1][j]=0;
 75                 dian[1]=dian[2];
 76             }
 77         }
 78 
 79         /*
 80         //小数点转换完成后的实数数据以及小数点的位置
 81         for(int i=0;i<=len[1]+sub;i++)
 82           printf("%d  ",data[1][i]);
 83           printf("\n");
 84         for(int i=0;i<=len[2]+sub;i++)
 85           printf("%d  ",data[2][i]);
 86           printf("\n");
 87         printf("dian   %d  %d\n",dian[1],dian[2]);
 88         */
 89         for(int i=0;i<2+len[1]+len[2];i++)
 90         {
 91             answer[i]=data[1][i]+data[2][i];
 92             //printf("%d  ",answer[i]);//两数相加但是并不进位
 93         }
 94         //printf("\n");
 95 
 96         //进位处理,注意小数点在进位时的影响
 97         for(int i=0;i<2+len[1]+len[2];i++)
 98         {
 99             if(i+1==dian[1])
100             {
101                 answer[i+2]+=answer[i]/10;//跳过小数点位置进位
102                 answer[i]=answer[i]%10;
103                 i++;
104             }
105             else
106             {
107                 answer[i+1]+=answer[i]/10;
108                 answer[i]=answer[i]%10;
109             }
110         }
111         //令小数点位置处为零,防止寻找s时造成影响
112         if(dian[1]>=0)
113           answer[dian[1]]=0;
114          int s,t;
115          //寻找数据输出的最低位
116         for(s=0;s<=dian[1];s++)
117             if(answer[s]!=0)
118                break;
119          //寻找数据输出的最高位
120         for(t=len[1]+len[2]+2;t>dian[1];t--)
121             if(answer[t]!=0)
122                 break;
123         //printf("s=%d  t=%d\n",s,t);
124         //若相加两数均为整数,则个位为最低位,输出时无小数点
125         if(dian[1]==-1)
126           s=0;
127 
128         for(int i=t;i>=s;i--)
129         {
130             if(i==dian[1])
131               printf(".");
132             else
133               printf("%d",answer[i]);
134         }
135 
136         printf("\n");
137 
138     }
139     //cout << "Hello world!" << endl;
140     return 0;
141 }

 

 

 

 

转载于:https://www.cnblogs.com/caoyuanlang/archive/2013/01/14/2860146.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

倒戈了,转投简书 --------

深情自白 还记得数月前那个月黑风高的晚上&#xff0c;笔主偶遇简书&#xff0c;被那婀娜多姿的Markdown输出深深吸引不能自拔&#xff0c;从此立下毒誓要两边同时发布。然而天有不测风云&#xff08;这边的太丑&#xff09;&#xff0c;前思后想寝食难安之后作出决定&#xff…

如何通过windows控制linux,如何从Windows远程控制Linux | MOS86

ifconfig将显示您需要连接的IP地址。 如果Linux盒具有以太网连接&#xff0c;则该地址将在eth0旁边列出。 如果以无线方式连接&#xff0c;请查找针对wlan0列出的IP地址。如果这不容易或不方便&#xff0c;则有另一种方法几乎同样简单。 在浏览器窗口中&#xff0c;连接到路由器…

简明Vim练级攻略(初学者)

http://blog.jobbole.com/18339/转载于:https://www.cnblogs.com/sherry00/p/3931023.html

安卓psp模拟器联机教程_刺激战场国际服下载方法教程!安卓ios模拟器都有

刺激战场国际服不需要VPN&#xff0c;不需要加速器。刺激战场国际服账号可以使用微信登入&#xff0c;进游戏页面点击more就可以了。安卓系统&#xff1a;①下载网易UU加速器&#xff0c;通过网易UU加速器平台直接下载。②有的机型不能通过网易UU下载&#xff0c;但是可以通过Q…

[转载] 民兵葛二蛋——第1集

转载于:https://www.cnblogs.com/6DAN_HUST/archive/2013/01/15/2860782.html

菜鸟的jQuery源码学习笔记(三)

1 each: function(callback, args) {2 return jQuery.each(this, callback, args);3 }, each:这个调用了jQuery.each方法&#xff0c;来遍历当前集合。我们先来看看jQuery.each方法: //args是一个数组 each: function(obj, callback, args) {var value,i 0,length o…

docker pdf 中文版 linux,Docker入门实战手册PDF

一、为什么要使用 Docker&#xff1f;1 、快速交付应用程序• 开发者使用一个标准的image 来构建开发容器&#xff0c;开发完成之后&#xff0c;系统管理员就可以使用这个容器来部署代码• Docker 可以快速创建容器&#xff0c;快速迭代应用程序&#xff0c;并让整个过程可见…

C#环境下的钩子详解

C#环境下的钩子详解 摘自网上供自己备查: http://www.csharpwin.com/csharpspace/2423.shtml 1、 WINDOWS的消息机制 2、 HOOK介绍 3、 HOOK链 4、 HOOK钩子的作用范围 5、 HOOK类型 6、 回调函数 7、 HOOK钩子的安装与卸载 8、 HOOK实例演示 WINDOWS的消息机制 Windows系统是…

福昕PDF阅读器的图章妙用

前几天同事发来一个pdf文件&#xff0c;说要把其中一部分遮住。我本来还想用pdf编辑软件直接给删除&#xff0c;结果发现是扫描文件制作的pdf不能编辑&#xff0c;大呼坑爹又要用ps了&#xff08;那家伙太慢&#xff0c;太占内存&#xff09;。 不想打开ps&#xff0c;于是开始…

openldap linux客户端,OpenLDAP 客户端安装部署

六、OpenLDAP客户端验证1、配置/etc/openldap/ldap.conf默认客户端不允许查询OpenLDAP条目信息&#xff0c;如果需要让客户端查询条目&#xff0c;需要添加OpenLDAP服务端的URI以及BASE条目&#xff0c;命令如下&#xff1a;2、客户端验证用户的信息添加我已经在上篇博文里面介…

奋斗的IT小小鸟

写了两集的《迷茫的IT小小鸟》&#xff0c;在经过了这么长的堕落与反思的阶段&#xff0c;终于也有点豁然开朗的感觉了&#xff0c;这学期以来浪费了太多的时间&#xff0c;本来规划的很好的时间和任务在自己一次次的说服不了自己的过程中终究没能实现&#xff0c;在这个期间更…

基于.Net Framework 4.0 Web API开发(4):ASP.NET Web APIs 基于令牌TOKEN验证的实现

概述&#xff1a; ASP.NET Web API 的好用使用过的都知道&#xff0c;没有复杂的配置文件&#xff0c;一个简单的ApiController加上需要的Action就能工作。但是在使用API的时候总会遇到跨域请求的问题&#xff0c; 特别各种APP万花齐放的今天&#xff0c;对API使用者身份角色验…

匈牙利命名法为何被淘汰_为何甲烷的习惯命名法用甲烷而不是一烷?

其实在有机化合物中文翻译早期&#xff0c;是有过用数字命名的阶段的&#xff0c;先上图。部分有机化合物在不同时期的汉译名对照那么后来为何未采用数字&#xff0c;而使用天干。与商务印书馆和郑贞文个人其实有很大关系。那么有机物中文命名的演进是怎样的呢&#xff1f;下面…

Windows下Mysql Cluster集群启动脚本与启动服务添加方法

3.2.8 集群启动脚本及启动服务注册 从上面的启动过程我们可以看出&#xff0c;Mysql集群启动命令较复杂&#xff0c;容易造成cmd窗口因误操作关闭而导致的数据库停止&#xff0c;在此我介绍一下如何将这些命令的操作变成windos的服务项&#xff0c;当windos启动时&#xff0…

c语言中for语句的作用是,c语言中for语句是怎么用的

匿名用户1级2018-11-20 回答1&#xff1a;for循环for语句的格式为&#xff1a;for (初始化语句; 条件语句; 控制语句){语句1 ;语句2 ;....语句n ;}for 语句的执行顺序是&#xff1a;首先执行“初始化语句”&#xff1b;然后测试“条件语句”&#xff1b;若条件成立&#xff0c;…

[Azure] Notification Hubs注册模式

[Azure] Notification Hubs注册模式 关于Azure Notification Hubs的注册模式&#xff0c;可以参考下列连结的文件内容。 Notification Hubs Features - Registration Management 文件里介绍了两种注册模式&#xff1a;手机主动注册、服务代理注册&#xff0c;这两个模式主要的差…

iOS 本地化应用程序汇总 国际化

最近要做一个应用要实现本地化&#xff0c;因为使用的是xcode4&#xff0c;应用程序本地化的问题跟以前的版本还是有些不同&#xff0c;在网上找了些资料对于xcode4以上的版本资料还是相对较少&#xff0c;有些最后要通过手动创建文件&#xff0c;这样操作实在是太麻烦&#xf…

图卷积神经网络_深度层次化图卷积神经网络

来源&#xff1a;IJCAI 2019论文地址&#xff1a;https://arxiv.org/abs/1902.06667代码地址&#xff1a;https://github.com/CRIPAC-DIG/H-GCNIntroduction1、问题定义&#xff1a;什么是半监督的节点分类&#xff1f;图1 半监督节点分类如图1所示&#xff0c;在标记数据量很少…

计算机二级怎么测试c语言,全国计算机等级测试二级C语言视频教程(完整版).doc...

第一章 程序设计的基本概念01-01.程序设计的基本概念(1)01-02.程序设计的基本概念(2)01-03.程序设计的基本概念(3)第二章 C语言基础知识02-01.简单C语言的构成和格式(1)02-02.简单C语言的构成和格式(2)02-03.标识符的组成和分类02-04.整型数据和实型数据(1)02-05.整型数据和实型…

去掉Phoca Download的Powered By

进入components/com_phocadownload/views/ 这是Phoca Download的模板文件夹 打开category/tmpl/default.php 分类页 //echo </div><div class"pd-cb"> </div> . $this->tmpl[phoca_download];echo </div> ; 打开file/tmpl/default.php …