【高精度】减法神童

问题 D: 【高精度】减法神童

时间限制: 1 Sec  内存限制: 64 MB
提交: 7  解决: 5
[提交] [状态] [讨论版] [命题人:外部导入]

题目描述

在科学城里住着一位减法神童,他可以在一秒钟内算出两个数相减的结果。这两个数可不是普通的数字,它们是11位以上的“宠然大物”。为了证明自己神奇的计算能力,减法神童请全城的人都来出题考自己,只要答错一题他就自愿放弃“减法神童”的称号。

你想考考减法神童吗?还是先编写一个程序帮我们算出任意两个11位以上的数相减的精确结果吧。

输入

第1行是被减数A,第2行是减数B(A,B的位数大于11,小于200)。

输出

A-B的结果。

样例输入

5894379463257
1245648324567

样例输出

4648731138690

 1 #include <iostream>
 2 #include<string>
 3 #include<algorithm>
 4 using namespace std;
 5 string s,t;
 6 int a[5005],b[5005],c[5005];
 7 int main()
 8 {
 9     cin>>s>>t;
10     int len1=s.size(),len2=t.size();
11     for(int i=len1-1;i>=0;i--)
12         a[len1-i-1]=s[i]-‘0‘;
13     for(int i=len2-1;i>=0;i--)
14         b[len2-i-1]=t[i]-‘0‘;
15     int len=max(len1,len2);
16     for(int i=0;i<len;i++)
17     {
18         c[i]+=(a[i]+b[i]);
19         if(c[i]>9)
20         {
21             c[i]-=10;
22             c[i+1]++;
23         }
24     }
25     if(c[len]!=0)
26     {
27         len++;
28     }
29     for(int i=len-1;i>=0;i--)
30         cout<<c[i];
31     cout<<endl;
32     return 0;
33 }

原文地址:https://www.cnblogs.com/scott527407973/p/9314501.html

时间: 2024-10-06 00:53:26

【高精度】减法神童的相关文章

高精度减法

高精度减法(a-b)(a>b且a,b均为正整数) .从键盘读入两个正整数,求它们的差. 分析:类似加法,可以用竖式求减法.在做减法运算时,需要注意的是:被减数必须比减数大,同时需要处理借位.高精度减法的参考程序: 1 program exam2; 2 const 3 max=200; 4 var 5 a,b,c:array[1..max] of 0..9; 6 n,n1,n2:string; 7 lena,lenb,lenc,i,x:integer; 8 begin 9 readln(n1);

洛谷 P2142 高精度减法 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接 :https://www.luogu.org/problem/show?pid=1581 题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据a,b在long long范围内 100%数据0<a,b<=10的10000次方 AC代码: 1 #include<alg

C++ 该死的高精度减法

没看书直接硬上的结果是,一个简单的高精度减法我用了一个多小时只写了一个90分的代码.之前准备NOIP的时候确实是学了,可惜现在早就还给老师了. 结果回家一看标准程序,顿时有种想哭的赶脚. 先上我的90分代码: //高精度减法 #include<iostream> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<vector>

P2142 高精度减法

题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据a,b在long long范围内 100%数据0<a,b<=10的10000次方 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 usin

AcWing 792.高精度减法

AcWing 792.高精度减法 题目描述 给定两个正整数,计算它们的差,计算结果可能为负数. 输入格式 共两行,每行包含一个整数. 输出格式 共一行,包含所求的差. 数据范围 1≤整数长度≤105 输入样例 32 11 输出样例 21 题目思路 低角标存低位,高角标存高位:依次进位 #include<iostream> #include<string> #include<vector> using namespace std; bool cmp(vector<i

高精度运算经典题目-减法神童

[问题描述] 两个任意十一位数的减法:(小于二十位) [输入说明] 输入两个数,分两行 [输出说明] 输出两个数的差值:(被减数比减数要大) #include <bits/stdc++.h> using namespace std; const int maxL=200; string s1,s2; int lena,lenb,lenc; int a[maxL],b[maxL],c[maxL]; void subtract(int a[],int lena,int b[],int lenb,i

高精度减法,在做小减大时可花了我不少时间!

减法: #include<stdio.h> #include<string.h> int main() { char s1[1000]; int a[1000]={0},b[1000]={0},c[1000]={0},l1=0,l2=0,l=0,i,x; scanf("%s",s1); l1=strlen(s1); for(i=0;i<=l1-1;i++) { a[l1-1-i]=s1[i]-'0'; } scanf("%s",s1);

高精度减法?!

高精减 接着上一篇的继续啦!!! 嗯输入就不再讲一遍了.存储和之前是一样的,倒序存储. 减法需要借位,所以解决减法借位是关键. 方法如下: if(a[i]<b[i]){ --a[i+1];//向上一位借一做十 a[i+=10]; } c[i]=a[i]-b[i];//逐位相减 这样就可以处理借位问题. 当然,在减法中还有一个需要处理的问题,当然这个问题很重要 减法中有被减数和减数的说法,当被减数<减数时,就需要解决结果是负数的问题 因为编译器中不可能直接检测出负数,所以这个时候就需要判断两数的

C# 高精度减法 支持小数(待优化)

是现实思路 1,先小数点补位,8913758923475893274958738945793845-4893127498372459823745324532453245.284929384729837498237492 => 8913758923475893274958738945793845.000000000000000000000000-4893127498372459823745324532453245.284929384729837498237492. 2,进行计算,最后补符号 pub