51nod 1005 大数加法
#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 大数加法的更多相关文章
- 大数高精度加减乘除 51nod 1005 大数加法
1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B ...
- 51 Nod 1005 大数加法【Java大数乱搞,python大数乱搞】
1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度 ...
- 【51Nod】1005 大数加法
给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度 <= 10000 需注意:A B有可能为负数) Output 输出A + B Input示例 ...
- 51nod 1005 1027 1029 高精度
Java大数用法参考:https://www.cnblogs.com/jin-nuo/p/5313205.html 1005 大数加法: import java.util.*; import java ...
- 51NOD 1005
1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大 ...
- 51NOD 大数加法以及python写法
练练 大数加法一般为小学生式的"竖式计算"要特别注意的是借位与进位的问题(先给看c++写法,我怕先看了python写法,会看不下去c++写法)这题还有要注意的是 1.同符号的话,直 ...
- c#大数加法
在C#中,我们经常需要表示整数.但是,c#的基本数据类型中,最大的long也只能表示-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之间的数 ...
- 玲珑杯1007-A 八进制大数加法(实现逻辑陷阱与题目套路)
题目连接:http://www.ifrog.cc/acm/problem/1056 DESCRIPTION Two octal number integers a, b are given, and ...
- 51nod 1027大数乘法
题目链接:51nod 1027大数乘法 直接模板了. #include<cstdio> #include<cstring> using namespace std; ; ; ; ...
随机推荐
- 12种不适宜使用的javascript语法
1. == (o゜▽゜)o☆[BINGO!] Javascript有两组相等运算符,一组是==和!=,另一组是===和!==.前者只比较值的相等,后者除了值以外,还比较类型是否相同. 请尽量不要使用前 ...
- 1-1 gulp 实战
npm install gulp-htmlmin gulp-imagemin imagemin-pngcrush gulp-minify-css gulp-jshint gulp-uglify gul ...
- Django model.py表单的默认值 默认允许为空
Field.null 默认是null=False,这时不能传入NULL型数据,但是可以是空字符. 如果BooleanField中想要null数据类型,可以选择NullBooleanField Fi ...
- wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)
首先说几个最常用的关键字,"eq" 和 "=="等同,可以使用 "and" 表示并且,"or"表示或者."!& ...
- Oracle监听服务启动失败案例
在ORACLE测试服务器上还原恢复了一个数据库后,启动监听服务时出现了TNS-12541, TNS-12560,TNS-00511之类的错误,具体情况如下所示: [oracle@getlnx01 ad ...
- RMAN备份失败: ORA-19502 & ORA-27072: File I/O error
早上检查一ORACLE数据库的RMAN备份的邮件时,发现出现了ORA-27072: File I/O error等错误,具体信息如下所示: channel ORA_DISK_1: starting p ...
- SQL Server 2008 R2的发布订阅配置实践
纸上得来终觉浅,绝知此事要躬行.搞技术尤其如此,看别人配置SQL SERVER的复制,发布-订阅.镜像.日志传送者方面的文章,感觉挺简单,好像轻轻松松的,但是当你自己去实践的时候,你会发现还真不是那么 ...
- 做的一个HTML表白页面
页面地址: http://myspace123.qiniudn.com/love/index.html 目录文件结构: index.html <html xmlns="http://w ...
- Java通过几种经典的算法来实现数组排序
Java实现数组排序 package com.souvc.hibernate.exp; public class MySort { /** * 方法名:main</br> * 详述:Jav ...
- C++STL - 模板的其他特性
之前已经总结过函数模板和类模板了,对于模板还有一些其他的特性,这篇主要介绍这些特性.主要都是一些特殊情况. 模板的其他特性 1.缺省参数 (1)类模板的模板参数可以带有缺省值,实例化该模板时,如果提供 ...