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. sqlserver备份还原数据库时报占用错误

    .做项目时遇到这种情形:原来的test_dev数据库,想复制出test_ft供测试用.此时备份test_dev出test_backup文件,想直接还原成test_ft时会报占用错误. 还原数据库:Th ...

  2. HDU 1014 Uniform Generator(题解)

    Uniform Generator Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  3. hdu5064 DLX可重复覆盖+二分

    这题题意是 给了n个城市 在其中小于等于k个城市建立机场然后 使得最远的那个离机场的城市距离最短 二分答案 ,我们对于每次的mid 重新建图然后再来一次DLX,每个点可以覆盖的点建立一条联系就ok了 ...

  4. STL容器之deque

    [1]deque容器 deque 是对 vector 和 list 优缺点的结合,它是处于两者之间的一种容器. [2]deque方法集 应用示例代码: #include <deque> # ...

  5. sklearn异常检测demo

    sklearn 异常检测demo代码走读 # 0基础学python,读代码学习python组件api import time import numpy as np import matplotlib ...

  6. Java综合高级篇

    1.你用过哪些集合类? 大公司最喜欢问的Java集合类面试题 40个Java集合面试问题和答案 java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法. ja ...

  7. javanio2

    package com.lanhuigu.nio.selector; import java.net.InetSocketAddress; import java.nio.ByteBuffer; im ...

  8. AtCoder Beginner Contest 083 (AB)

    A - Libra 题目链接:https://abc083.contest.atcoder.jp/tasks/abc083_a Time limit : 2sec / Memory limit : 2 ...

  9. 51Nod 1069 Nim游戏 (位运算)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1069 有N堆石子.A B两个人轮流拿,A先拿.每次只能从一堆 ...

  10. SQL Server 2008 R2 常用系统函数学习

    /******************************************* * 聚合函数 *******************************************/ SEL ...