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


思路:小数整数分开计算,先计算小数(注意后导0和全为0情况,例如1.2000000  1.0)。再计算整数(注意前导0和只有0情况),整数输出部分真的是搞死了,对于极端情况还是欠考虑,不好设置其中的开关条件
附上借鉴的大佬解法:感谢大佬

代码:
#include<stdio.h>
#include<string.h>
int main()
{
char a[410],b[410];
int a1[410],a2[410],b1[410],b2[410],p1,p2,lena,lenb,i,j,point1,point2;
while(scanf("%s%s",a,b)!=EOF)
{
memset(a1,0,sizeof(a1));//整数
memset(a2,0,sizeof(a2));//小数
memset(b1,0,sizeof(b1));//整数
memset(b2,0,sizeof(b2));//小数
lena=strlen(a);
lenb=strlen(b);
p1=lena;
for(i=0;i<lena;i++){
if(a[i]=='.'){
p1=i; //整数长度
break;
}
}
p2=lenb;
for(i=0;i<lenb;i++){
if(b[i]=='.'){
p2=i; //整数长度
break;
}
}
for(i=0;i<p1;i++){
a1[p1-1-i]=a[i]-'0'; // 整数转移 (倒置)
}
for(j=0,i=p1+1;i<lena;i++,j++){
a2[j]=a[i]-'0'; //小数转移
}
for(i=0;i<p2;i++){
b1[p2-1-i]=b[i]-'0'; // 整数转移 (倒置)
}
for(j=0,i=p2+1;i<lenb;i++,j++){
b2[j]=b[i]-'0'; //小数转移
} for(i=400;i>0;i--){ //小数相加
a2[i]=a2[i]+b2[i];
if(a2[i]>=10){
a2[i]-=10;
a2[i-1]++;
}
}
a2[i]=a2[i]+b2[i];
if(a2[i]>=10){
a2[i]-=10;
a1[0]++;
}
point1=-1;
for(i=400;i>=0;i--){ //小数除去后导0
if(a2[i]!=0){
point1=i; //找到小数最末尾不为0的位置
break;
}
}
lena=p1;lenb=p2;
int len=lena>lenb?lena:lenb; //整数相加
for(i=0;i<len;i++){
a1[i]+=b1[i];
if(a1[i]>=10){
a1[i]-=10;
a1[i+1]++;
}
}
point2=0;
for(j=i;j>=0;j--){ //判断、除去前导0
if(a1[j]!=0){
point2=1;
}
if(point2){
printf("%d",a1[j]);
}
}
if(point2==0){
printf("0");
}
if(point1!=-1){
printf(".");
for(i=0;i<=point1;i++){
printf("%d",a2[i]);
}
}
printf("\n");
}
return 0;
}

终于搞腚了




大明A+B(大数相加)解题报告的更多相关文章

  1. LeetCode :2.两数相加 解题报告及算法优化思路

    题目连接:2.两数相加 题意 题目难度标为 中等, 因为题意上有一部分理解难度,以及需要数据结构的链表基础. 还不知道到链表的童鞋可以粗略的看下百度百科或者是翻出数据结构的书看一看,通俗一点的语言来解 ...

  2. 洛谷 P3332 [ZJOI2013]K大数查询 解题报告

    P3332 [ZJOI2013]K大数查询 题目描述 有\(N\)个位置,\(M\)个操作.操作有两种,每次操作如果是\(\tt{1\ a\ b\ c}\)的形式表示在第\(a\)个位置到第\(b\) ...

  3. LeetCode 2 Add Two Sum 解题报告

    LeetCode 2 Add Two Sum 解题报告 LeetCode第二题 Add Two Sum 首先我们看题目要求: You are given two linked lists repres ...

  4. LeetCode 1 Two Sum 解题报告

    LeetCode 1 Two Sum 解题报告 偶然间听见leetcode这个平台,这里面题量也不是很多200多题,打算平时有空在研究生期间就刷完,跟跟多的练习算法的人进行交流思想,一定的ACM算法积 ...

  5. poj1173 解题报告

    poj1173 解题报告2013-07-21 13:31 by 期待 ., 42 阅读, 0 评论, 收藏, 编辑 http://poj.org/problem?id=1173 发现此题资料甚少,斗胆 ...

  6. HDU-2032解题报告

    Hdu-2032解题报告题意:实现给定行数的杨辉三角的输出. 杨辉三角的特点:每一行数据的开头和结尾是1,然后其他的数据是由其上一个数据与其左上角的数据之和组成11 11 2 11 3 3 11 4 ...

  7. LeetCode - 167. Two Sum II - Input array is sorted - O(n) - ( C++ ) - 解题报告

    1.题目大意 Given an array of integers that is already sorted in ascending order, find two numbers such t ...

  8. ACM-ICPC 2017 Asia HongKong 解题报告

    ACM-ICPC 2017 Asia HongKong 解题报告 任意门:https://nanti.jisuanke.com/?kw=ACM-ICPC%202017%20Asia%20HongKon ...

  9. USACO Section2.1 The Castle 解题报告

    castle解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  10. Leetcode 115 Distinct Subsequences 解题报告

    Distinct Subsequences Total Accepted: 38466 Total Submissions: 143567My Submissions Question Solutio ...

随机推荐

  1. linux正则

    正则表达式 分两类:  基本正则表达式:BRE  扩展正则表达式:ERE :grep -E, egrep 正则表达式引擎:  采用不同算法,检查处理正则表达式的软件模块       PCRE(Perl ...

  2. yii2验证密码->手机号码短信发送>手机短信发送频繁问题

    <?php namespace frontend\models; use Yii; use yii\base\Model; class ChangeMobileSendRequestForm e ...

  3. ios 回调函数作用

    //应用程序启动后调用的第一个方法 不懂的程序可以做不同的启动 //launchOption参数的作业:应用在特定条件下的不同启动参数 比如:挑战的支付宝支付 - (BOOL)application: ...

  4. 准备spring

    下载对应版本:http://repo.spring.io/libs-release-local/org/springframework/spring/ Spring下载:https://spring. ...

  5. SpringMVC探究-----常用获取传递参数的方法

       1.@RequestParam @RequestParam 常用来映射请求参数,它有三个属性可以配置: value 值即请求参数的参数名 required 该参数是否必须. 默认为 true d ...

  6. 基于TCP/IP协议的socket通讯server

    思路: socket必须要随项目启动时启动,所以需用Spring自带的监听器,需要保持长连接,要用死循环,所以必须另外起线程,不能阻碍主线程运行 1.在项目的web.xml中配置listener &l ...

  7. 【Linux学习一】命令查看与帮助

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 一.Linux执行命令流程:shell->bash(解释器 执行 ...

  8. 配置tomcat的https域名

    配置tomcat的https域名: <Connector port=" protocol="org.apache.coyote.http11.Http11NioProtoco ...

  9. 使用Java注解自动化处理对应关系实现注释代码化

    概述 假设我们要从一个 ES 索引(相当于一张DB表)查询数据,ES表有 biz_no, type, status 等字段, 而应用对象则有属性 bizNo, type, status 等.这样,就会 ...

  10. 转:三值逻辑与NULL的处理方式

    来自:<Microsoft SQL SERVER 2008技术内幕 T-SQL查询>P7 在SQL中谓词(逻辑表达式)的可能值为TRUE.FALSE和UNKNOWN.这就是所谓的三值逻辑, ...