题目名称 38. 增强的减法问题
输入输出 sub.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 GravatarIM_ask 于2008-07-06加入
开放分组 全部用户
提交状态
分类标签
高精度 字符串
查看题解 分享题解
通过:578, 提交:1760, 通过率:32.84%
GravatarLOSER 100 0.000 s 0.00 MiB C++
Gravatar哒哒哒哒哒! 100 0.000 s 0.00 MiB C++
Gravatarjxy_1999 100 0.000 s 0.00 MiB Pascal
GravatarHzoi_chairman 100 0.000 s 0.00 MiB C++
Gravatar金身人面兽 100 0.000 s 0.00 MiB C++
Gravatarsxysxy 100 0.000 s 0.00 MiB C++
Gravatar520 100 0.000 s 0.00 MiB C++
Gravatarxrq 100 0.000 s 0.00 MiB C++
GravatarRegnig Etalsnart 100 0.000 s 0.00 MiB C++
GravatarRegnig Etalsnart 100 0.000 s 0.00 MiB C++
本题关联比赛
基本练习
NOIP2015普及组练习
防止浮躁的小练习v0.4
关于 增强的减法问题 的近10条评论(全部评论)
如果用strlen建议百度搜索一下比较原理,如果仅用strlen比较字符串大小,第二组数据是会错的
Gravataryangyifan
2018-10-21 20:31 21楼
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int main()
{
freopen("gjsub.in","r",stdin);
freopen("gjsub.out","w",stdout);
string sd,se,sa;
int a[100001]={0},b[100001]={0},c[100001]={0},mc,me,mz,n,mo=0;
cin>>sd>>se;
mc=sd.size();
me=se.size();
if(mc<me||mc==me&&sd<se)
{ sa=sd;sd=se;se=sa;n=mc;mc=me;me=n;mo=-1; }
for(int i=1;i<=mc;i++) a[i]=sd[mc-i]-'0';
for(int i=1;i<=me;i++) b[i]=se[me-i]-'0';
int i=1,o=0;
while(i<=mc||i<=me)
{
if(a[i]<b[i]){a[i+1]--;a[i]+=10;}
c[i]=a[i]-b[i];
i++;
}
mz=i;
while(c[mz]==0&&mz>1)mz--;
if(mo==-1) cout<<"-";
for(int i=mz;i>=1;i--) cout<<c[i];
return 0;
}
终于做出来了:-)
Gravatar3280175901
2018-10-10 20:01 20楼
好难啊...
我以为很简单的
GravatarCSU_Turkey
2017-09-04 17:38 19楼
第一错的原因是减法的运算律写错了、、、
GravatarO(1)
2016-11-15 18:13 18楼
一晚上手写大整数封装,加减乘除大小等加上取模,不要白不要
GravatarHzoi_Go灬Fire
2016-10-31 21:30 17楼
到了这里才发现自己的高精减有错!
Gravatar洛克索耶夫
2016-08-16 14:03 16楼
一水就过,测试高精度模板用
Gravatarsxysxy
2016-06-29 23:42 15楼
终于过的,成就感皱皱的
GravatarGo灬Fire
2016-05-25 10:06 14楼
细节真多,特别是答案中有零的时候。
Gravatararchangel.
2016-04-09 16:15 13楼
wocccccccccccccccccccccccccc!!!!!!!!!!!!!!!!!
这题的特殊情况太TM多了!!!!!!!!!!!
各种懵逼,总共试了四次!
Gravatararchangel.
2016-04-09 16:13 12楼

38. 增强的减法问题

★   输入文件:sub.in   输出文件:sub.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

输入两个正整数,输出第一个数减去第二个数的差,可能是整数,负数或0。

【输入格式】

输入文件只有两行,第一行一个整数x,第二行一个整数y。其中$0\leq x\leq 10^{100},0\leq y\leq 10^{100}$

【输出格式】

输出文件有1行,第一个数减去第二个数的差。

【输入样例】

123456789123456789
123456789

【输出文件】

123456789000000000