题目描述 Description

给出两个正整数A和B,计算A-B的值。保证A和B的位数不超过500位。

输入描述 Input Description

读入两个用空格隔开的正整数

输出描述 Output Description

输出A-B的值

样例输入 Sample Input

3 12

样例输出 Sample Output

-9

数据范围及提示 Data Size & Hint

两个正整数的位数不超过500位

代码:

 #include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
using namespace std;
char a[],b[];
int c[];
int cp(char a[],char b[])//比较两个大数的大小,a大返回1,b大返回2,一样大返3;
{
int i=strlen(a),j=strlen(b);
if(i>j)return ;
else if(j>i)return ;
else if(i==j)
{
for(int k=; k<j; k++)
{
if(a[k]>b[k])return ;
if(a[k]<b[k])return ;
}
return ;
}
}
int main()
{
memset(c, , sizeof(c));
cin>>a>>b;
int cmp=cp(a,b);
if(cmp==)printf("0\n"); //一样大直接输出0;
int lena=strlen(a);
int lenb=strlen(b);
int i=lena-,j=lenb-,k=;//注意长度减一;
int carry=;//设置进位,开始为0;
while(i>=&&j>=)//先处理两个大数在相同位数那一段相减;模拟手算
{
int cc;//注意a,b转换成int型
if(cmp==)cc=(a[i]-'')-(b[j]-'')-carry;//如果a大,用a-b;
else if(cmp==)cc=(b[j]-'')-(a[i]-'')-carry;//b大,用b-a;
if(cc<)//减了要判断是不是负数
{
c[k++]=cc+;//负数要加10;
carry=;//加10后要向前-1;
i--;j--;
}
else
{
c[k++]=cc;//正数直接赋值
carry=;//进位不用减
i--;j--;
}
}
/* 调试代码,你懂得!
for(int l=k;l>=0;l--)printf("%d",c[l]);printf("\n");
printf("%d %d\n",i,j);
下面处理多出的那一段;
*/
if(cmp==&&i>=){//a长些或者大些就把a多出b的部分直接赋值给c,注意同时进位也得继续补上,避免1000-1跪;
while(i>=){
int cc=a[i--]-''-carry;//同样转int
if(cc<){c[k++]=cc+;carry=;}
else {c[k++]=cc;carry=;}
}
}
if(cmp==&&j>=){//b长些或者大些就把b多出a的部分直接赋值给c,注意同时进位也得继续补上,避免1000-1跪;
while(j>=){
int cc=b[j--]-''-carry;//同样转int
if(cc<){c[k++]=cc+;carry=;}
else {c[k++]=cc;carry=;}
}
}
if(cmp==)printf("-");//b大就输出负号;
int last=;
for(int l=;l<k;l++)if(c[l]!=)last=l;//找出第一个不为0的数
for(int l=last;l>=;l--)printf("%d",c[l]);//因为是从c[0]开始先存个位,所以倒着输出
printf("\n");
return ;
}

wiki oi 3115高精度练习之减法的更多相关文章

  1. wiki oi 3116 高精度练习之加法

    题目描述 Description 给出两个正整数A和B,计算A+B的值.保证A和B的位数不超过500位. 输入描述 Input Description 读入两个用空格隔开的正整数 输出描述 Outpu ...

  2. 【Codevs 3115】高精度练习之减法

    http://codevs.cn/problem/3115/ 板子题~ // <H.cpp> - Sun Oct 9 12:58:23 2016 // This file is made ...

  3. wiki oi 1044 拦截导弹

    题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某 ...

  4. 1214 线段覆盖wiki oi

    题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数.有些线段 ...

  5. c++ 普通高精减

    //c++ 普通高精减 //codevs 3115 高精度练习之减法 //内容简单,就不注释了. //注意下,&&优先级高于||. #include<cstdio>#inc ...

  6. 高精度 - SGU 112 a^b-b^a

    a^b-b^a Problem's Link Mean: 略 analyse: 简单题,只用编个高精度乘法和减法即可. Time complexity: O(N) view code  java im ...

  7. 51Nod 1005 有负数的高精度加法

    51Nod是个好地方啊 题意 51Nod基础题第二题,高精度加法,可能有负数. 解题 如果按照一般的高精度,我们发现要分情况讨论,还要写高精度加法和减法,代码实现有点烦.而初中数学里说,省略加号的和. ...

  8. 【u216】A+B Problem(aplusb)

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 对于给定的A和B,求A+B的值. [输入格式] 输入文件aplusb.in的第1行为一个整数A,第2行 ...

  9. 【目录】洛谷|CODEVS题解汇总

    [动规]爱与愁的心痛 [动规]编辑距离 [动规]采药 [动规]创意吃鱼法 [动规]过河卒 [动规]开心的金明 [动规]旅行 [动规]骑士游历 [动规]数字三角形 [动规]最长连号 [动规]装箱问题 [ ...

随机推荐

  1. .NET + Jcrop 实现在线裁图功能

    最近有这样一个需求,因为一个门户网站首页展示图片很长但很矮,自己截图怕有不到位,所以利用JQUERY 的 Jcrop组件做了一个在线裁图的功能. 初始化 $('#oldpicImg').Jcrop({ ...

  2. HTML5入门(一)

    HTML简单介绍: HTML(HyperText Markup Language),超文本标记语言,是一种专门用于创建web的超文本文档编程语言,是我们看到的网页的源代码. 版本简介: 1997年推出 ...

  3. UIImage缩放

    +(UIImage *)scaleImage: (UIImage *)image scaleFactor:(float)scaleFloat { CGSize size = CGSizeMake(im ...

  4. fullPage.js插件用法(转发)

    fullPage.js主要功能有: 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 支持 CSS3 动画 支持窗口缩放 窗口缩放时自动调整 可设置滚动宽度.背景颜色.滚动速 ...

  5. vs2010更改默认环境设置

    今天刚刚装vs2010手欠点击了新建团队项目,在百度上各种查找说让我去 visual studio tools的命令提示中进行 devenv命令行修改 ResetString但是没找到我设置文件的路径 ...

  6. jquery自动识别输入的都是数字

    //自动判断输入的书否为正整数 function wds_purchase_keyup(t) { var val = $(t).val(); -]+$/.test(val) && va ...

  7. Stack trace对性能的影响

    package ceshi; public class ExceptionTest { public long maxLevel = 20; public static void main(Strin ...

  8. mybatis+spring+c3p0+maven+ehcache

    项目截图 pom.xml如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http: ...

  9. Oracle SQL篇(四)group by 分组与分组的加强 rollup

        分组操作group by 和分组的强化(rollup) 分组操作和分组函数的使用,对于编写SQL语句的人来说,是最基本的概念. 我们来看下面的例子: 在这里我们使用员工表EMP scott@D ...

  10. oracle,如何查看视图结构,获得视图中的字段名称、字段类型、字段长度等。

    需要获得一个视图中的字段名称.字段类型.字段长度等信息,该如何编写sql语句.通过select * from user_views可以获得给定用户下所有的视图名称了,但是没找到如何获取视图结构的解决方 ...