#include<iostream>
#include<string>
using namespace std;
#define MAXN 10001
int a[MAXN]={},b[MAXN]={};
bool init(int a[])
{
int i;
string s;
cin>>s;
a[]=s.length();
if(s[]=='-')
{
//a[0]--;
for(i=;i<=a[];i++)
a[i]=s[a[]-i]-'';
a[a[]]=;
a[]--;
return false;
}
else
{
for(i=;i<=a[];i++)
a[i]=s[a[]-i]-'';
return true;
}
}
void print(int a[])
{
int i;
if (a[]==){cout<<<<endl;return;}
for(i=a[];i>;i--) cout<<a[i];
cout<<endl;
return ;
}
void jia(int a[],int b[])
{ int i,k;
if(a[]<b[])a[]=b[];
for(i=;i<=a[];i++) a[i]+=b[i];
for(i=;i<=a[];i++)
{
a[i+]+=a[i]/;
a[i]%=;
}
if(a[a[]+]>) a[]++;
}
int compare (int a[],int b[])
{ int i;
if (a[]>b[]) return ;//a的位数大于b则a比b大
if (a[]<b[]) return -;//a的位数小于b则a比b小
for(i=a[];i>;i--) //从高位到低位比较
{ if (a[i]>b[i]) return ;
if (a[i]<b[i]) return -;
}
return ;//各位都相等则两数相等。
} int jian(int a[],int b[])//计算a=a-b
{
int flag,i;
flag=compare(a,b); //调用比较函数判断大小
if (flag==) {a[]=;return ;} //相等
if(flag==) //大于
{
for(i=;i<=a[];i++)
{
if(a[i]<b[i]){ a[i+]--;a[i]+=;} //若不够减则向上借一位
a[i]=a[i]-b[i];
}
while(a[a[]]==) a[]--; //修正a的位数
return ;
}
if (flag==-)//小于 则用a=b-a,返回-1
{
for(i=;i<=b[];i++)
{if(b[i]<a[i]){b[i+]--;b[i]+=;} //若不够减则向上借一位
a[i]=b[i]-a[i];
}
a[]=b[];
while(a[a[]]==) a[]--; //修正a的位数
return -;
}
}
int main()
{
bool signa=false,signb=false;
signa = init(a);
signb = init(b);
if(signa&&signb)
{
jia(a,b);
print(a);
}
else if(!signa&&!signb)
{
jia(a,b);
printf("-");
print(a);
}
else
{
if(jian(a,b)==)
{
if(!signa&&a[])
cout<<'-';
}
else
{
if(!signb&&a[])
cout<<'-';
}
print(a);
}
return ;
}

大数加法

51nod 1005 大数加法的更多相关文章

  1. 大数高精度加减乘除 51nod 1005 大数加法

    1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B ...

  2. 51 Nod 1005 大数加法【Java大数乱搞,python大数乱搞】

    1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度  ...

  3. 【51Nod】1005 大数加法

    给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度 <= 10000 需注意:A B有可能为负数) Output 输出A + B Input示例 ...

  4. 51nod 1005 1027 1029 高精度

    Java大数用法参考:https://www.cnblogs.com/jin-nuo/p/5313205.html 1005 大数加法: import java.util.*; import java ...

  5. 51NOD 1005

    1005 大数加法  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出2个大整数A,B,计算A+B的结果.   Input 第1行:大数A 第2行:大 ...

  6. 51NOD 大数加法以及python写法

    练练 大数加法一般为小学生式的"竖式计算"要特别注意的是借位与进位的问题(先给看c++写法,我怕先看了python写法,会看不下去c++写法)这题还有要注意的是 1.同符号的话,直 ...

  7. c#大数加法

    在C#中,我们经常需要表示整数.但是,c#的基本数据类型中,最大的long也只能表示-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之间的数 ...

  8. 玲珑杯1007-A 八进制大数加法(实现逻辑陷阱与题目套路)

    题目连接:http://www.ifrog.cc/acm/problem/1056 DESCRIPTION Two octal number integers a, b are given, and ...

  9. 51nod 1027大数乘法

    题目链接:51nod 1027大数乘法 直接模板了. #include<cstdio> #include<cstring> using namespace std; ; ; ; ...

随机推荐

  1. mysql时间加减函数

    先来看一个例子: select now(),now()+0; 可以看到now()函数可以返回一个时间也可以返回一个数字,就看大家如何使用.如果相对当前时间进行增加或减少,并不能直接加上或减去一个数字而 ...

  2. Android-socket服务端断重启后,android客户端自动重连

    今天研究这个问题搞了整整一天啊!终于出来了,不过我没有多大的成就感,为什么呢?因为这不是我的劳动成果.同样的问题,我却没想出来!心塞的很啊…… 不过还是要给大家分享一下,希望给大家带来帮助! 先声明一 ...

  3. AMD规范与CMD规范的区别是什么?

    AMD规范与CMD规范的区别是什么?    在比较之前,我们得先来了解下什么是AMD规范?什么是CMD规范?当然先申明一下,我个人也是总结下而已,也是网上看到的资料,自己总结下或者可以说整理下而已,供 ...

  4. Linux时间同步介绍

    在Linux系统中,为了避免主机时间因为在长时间运行下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的.Linux系统下,一般使用ntp服务来同步不同机器的时间.NTP 是网 ...

  5. JavaScript数字精度丢失问题总结

    本文分为三个部分 JS 数字精度丢失的一些典型问题 JS 数字精度丢失的原因 解决方案(一个对象+一个函数) 一.JS数字精度丢失的一些典型问题 1. 两个简单的浮点数相加 0.1 + 0.2 != ...

  6. GIT/node使用

    一. 为不同域名的库自动保存不同的用户名和密码 比如 公司的库是 http://source.sohu.com,另一个是 http://www.github.com,命令行中分别两个命令就搞定了 gi ...

  7. mongoDB的安装(一)

    0.安装环境说明: linux系统:centos6.5 mongoDB版本:mongodb-linux-x86_64-rhel62-3.2.7.tgz 1.下载 mongoDB的下载:https:// ...

  8. 从一个url输入浏览器到页面渲染出来,这个过程都发生了哪些事情?

    经典问题:在浏览器输入一个url后,会发生什么事情呢? (1)假设是简单的http请求(GET),IPV4,无代理. 浏览器先查看浏览器缓存-系统缓存-路由器缓存,若缓存中有,请略过中间步骤,直接跳到 ...

  9. 轻松搞懂WebService工作原理

    用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助. WebService是基于网络的.分布式的模块化组件. 我们直接来看WebService的一个简易工作流程: ...

  10. Hibernate 错题分析