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

#include<iostream>

using namespace std;
void shuchu(char *a,int m1,int t1,int t2)
{int i;
for(i=799;i>=0;i--)
if(i!=m1) if(a[i]>'9'&&i!=0)
{
if(i==m1+1)
{a[i]=a[i]-10;
a[i-2]++;}
else
{ a[i]=a[i]-10;
a[i-1]++;
}
}
if(a[i]>'9'&&i==0)
{a[i]-=10;cout<<1;}
for(i=0;i<t1||i<t2;i++)
{
if(i==m1)
cout<<'.';
else
cout<<a[i]; } }
int main()
{ char a[800],b[800];
int t1,t2,m1,m2,n=0,i,i1,k1,k2;
while (cin>>a>>b)
{ t1=strlen(a);
t2=strlen(b);
for(i=t1;i<800;i++)
if((a[i]<'0'||a[i]>'9')&&a[i]!='.')
a[i]=NULL;
for(i=t2;i<800;i++)
if((b[i]<'0'||b[i]>'9')&&b[i]!='.')
b[i]=NULL;
m1=0;
m2=0; for(i=0;i<t1;i++)
{
if(a[i]=='.')
{
m1=i;
break;
}
} for(i=0;i<t2;i++)
{
if(b[i]=='.')
{
m2=i;
break;
}
}
k1=m1;
k2=m2; if(m1>=m2&&m2!=0)
{
for(k1--,k2--;k1>=0&&k2>=0;k1--,k2--)
a[k1]=a[k1]+b[k2]-48;
k1=m1;
k2=m2;
for(k1++,k2++;k1<t1||k2<t2;k1++,k2++)
a[k1]=a[k1]+b[k2]-48; shuchu(a,m1, t1, t2); } if(m2>m1&&m1!=0)
{
for(k1--,k2--;k1>=0&&k2>=0;k1--,k2--)
b[k2]=a[k1]+b[k2]-48;
k1=m1;
k2=m2;
for(k1++,k2++;k1<t1||k2<t2;k1++,k2++)
b[k2]=a[k1]+b[k2]-48; shuchu(b,m2, t1, t2); }
if(m1==0&&m2!=0)
if(t1<=m2)
{ for(t1--,k2--;t1>=0;t1--,k2--)
b[k2]=b[k2]+a[t1]-48;
for(i=799;i>=0;i--)
shuchu(b,m2, t1, t2);
}
else
{k1=t1;
for(k1--,k2--;k2>=0;k1--,k2--)
a[k1]=b[k2]+a[k1]-48;
k1=t1;
k2=m2;
for(;k1<800;k1++,k2++)
a[k1]=b[k2];
for(i=799;i>=0;i--)
shuchu(a,m1, t1, t2);
} if(m2==0&&m1!=0)
if(t2<=m1)
{ for(t2--,k1--;t2>=0;t2--,k1--)
a[k1]=b[t1]+a[k1]-48;//////////////////////////////
for(i=799;i>=0;i--)
shuchu(a,m1, t1, t2);
}
else
{k2=t2;
for(k1--,k2--;k2>=0;k1--,k2--)
b[k2]=a[k1]+b[k2]-48;
k2=t2;
k1=m1;
for(;k2<800;k2++,k1++)
b[k2]=a[k1];
for(i=799;i>=0;i--)
shuchu(b,m2, t1, t2);
}
if(m1==m2&&m2==0)
{
if(t1>t2)
{
m1=t1;m2=t2;
for(m1--,m2--;m2>=0;m1--,m2--)
a[m1]=a[m1]+b[m2]-48;
for(i=799;i>=0;i--)
{if(a[i]>'9'&&i!=0)
{a[i]=a[i]-10;a[i-1]++;}
if(a[i]>'9'&&i==0)
{a[i]=a[i]-10;cout<<1;}}
for(i=0;i<t1;i++) cout<<a[i];
}
if(t2>=t1)
{
m2=t2;m1=t1;
for(m1--,m2--;m1>=0;m1--,m2--)
b[m2]=a[m1]+b[m2]-48;
for(i=799;i>=0;i--)
{if(b[i]>'9'&&i!=0)
{b[i]=b[i]-10;b[i-1]++;}
if(b[i]>'9'&&i==0)
{b[i]=b[i]-10;cout<<1;}
}
for(i=0;i<t2;i++)
cout<<b[i]; } } }
return 0;
}

任意长度的正小数的加法(YT新人之巅峰大决战05)的更多相关文章

  1. YT新人之巅峰大决战04

    Problem Description Eddy's interest is very extensive, recently he is interested in prime number. Ed ...

  2. YT新人之巅峰大决战03

    题目链接 Problem Description Now give you two integers n m, you just tell me the m-th number after radix ...

  3. [c++]大数运算1---利用C++ string实现任意长度正小数、整数之间的加减法

    一.概述 本文属于大大维原创,未经笔者本人允许,严禁转载!!! C/C++中的int类型能表示的范围是-2E31-2E31–1.unsigned类型能表示的范围是0-2E32–1,即 0-429496 ...

  4. [c++]大数运算---利用C++ string实现任意长度正小数、整数之间的加减法

    本文为大大维原创,最早于博客园发表,转载请注明出处!!! 一.概述 C/C++中的int类型能表示的范围是-2E31-2E31–1.unsigned类型能表示的范围是0-2E32–1,即 0-4294 ...

  5. 生成任意长度的随机数 JS

    1.Math.random().toString(36).substr(2); 结果:ywv6cnpkliahj4tep0 2.   1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  6. 求任意长度数组的最大值(整数类型)。利用params参数实现任意长度的改变。

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. 在js脚本里计算多个小数的加法问题

    当在js脚本里计算多个小数的加法时,算得的结果往往会自动取整,这时候我们就应该加入以下代码: function toDecimal(x) { var val = Number(x); if (!isN ...

  8. C语言---递归反向输出任意长度的字符串

    (该字符串可以包含空格和回车!) [题目要求] 编写一个递归函数,实现将输入的任意长度的字符串反向输出的功能. 例如输入字符串:ABCD,输出字符串:DCBA. [题目分析] 应用递归的思想有时可以很 ...

  9. 【模板小程序】任意长度非负十进制数转化为二进制(java实现)

    妈妈再也不用担心十进制数过大了233(注意只支持非负数) import com.google.common.base.Strings; import java.math.BigInteger; imp ...

随机推荐

  1. 智能生活 “视”不可挡——首届TCL杯HTML5智能电视开发大赛等你来挑战

    http://www.csdn.net/article/2014-06-04/2820063-TCL-Smart-TV-Innovation-Competation

  2. SQLServer 复制中移除和加入公布而不初始化全部项目

    -- 若提前"禁止架构更改".新增的列不会自己主动加入大公布.此时应使用 sp_articlecolumn 加入列 EXEC sp_changepublication @publi ...

  3. SVNKIT的SVNCommitClient的doMkDir的操作

    package com.repositoryclient.svnoptions; import java.io.File; import org.tmatesoft.svn.core.SVNCommi ...

  4. 第6本:《The Hunger Games》

    第6本:<The Hunger Games> 以前从未读过一本完整的英文小说,所有就在今年的读书目标中增加了一本英文小说,但在 头四个月内一直没有下定决定读哪一本.一次偶然从SUN的QQ空 ...

  5. 谈Web应用系统的可维护性

           每一个软件开发人员都十分清楚, 当软件构建得越来越复杂时, 可维护性就成了一个很突出的问题. 如何在构造软件系统的过程中始终保持可控制的可维护性呢?          一. 整体组织   ...

  6. PSU 离11.2.0.3.0 -&gt; 11.2.0.3.11 如果解决冲突的整个

    Oracle rdbms 扑灭psu离11.2.0.3.0升级到11.2.0.3.11 参考patch :18522512 停止应用,停止听音乐并DB,将db的oracle_home在下面OPatch ...

  7. thinkphp框架相关研究(一)

    小编最近开始正式研究thinkphp框架,在此写下研究的整个历程,从最最基本的搭建网站开始,一步步记录.希望对大家有所帮助. 1.菜鸟从下载框架到建站 参考网址:http://blog.csdn.ne ...

  8. HDU 1241 :Oil Deposits

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  9. Codeforces Jzzhu and Sequences(圆形截面)

    # include <stdio.h> int f[10]; int main() { int x,y,n,j; while(~scanf("%d%d%d",& ...

  10. Unity3D之挥动武器产生的剑痕特效

    网维教程网 观看很多其它教程 眼下已知3种方法能够做这样的剑痕特效 1.尾随特效 2.程序实现动态面来处理剑痕动画. 3.美术实现剑痕动画,直接坐在模型动画里面 (由于我不会美术所以这个忽略 嘿嘿) ...