18.2.28 codevs3115 高精度练习之减法

题目描述 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位

 1 #include <iostream>
 2 #include <string.h>
 3 #include <math.h>
 4
 5 using namespace std;
 6
 7 int main()
 8 {
 9     char a[600],b[600];//计算a-b
10     cin>>a>>b;
11     //scanf("%s %s",la,lb);
12     int la=strlen(a),lb=strlen(b),l=0;
13     int an[600],bn[600];
14     if(la>lb)
15     {
16         for(int i=la-1;i>=la-lb;i--)
17             bn[i]=b[i-(la-lb)]-‘0‘;
18         for(int i=0;i<=la-lb-1;i++)
19             bn[i]=0;
20         for(int i=0;i<=la-1;i++)
21             an[i]=a[i]-‘0‘;
22         l=la-1;
23     }
24     else if(la<lb)
25     {
26         for(int i=lb-1;i>=lb-la;i--)
27             an[i]=a[i-(lb-la)]-‘0‘;
28         for(int i=0;i<=lb-la-1;i++)
29             an[i]=0;
30         for(int i=0;i<=lb-1;i++)
31             bn[i]=b[i]-‘0‘;
32         l=lb-1;
33     }
34     else
35     {
36         for(int i=0;i<=la-1;i++)
37             an[i]=a[i]-‘0‘;
38         for(int i=0;i<=lb-1;i++)
39             bn[i]=b[i]-‘0‘;
40         l=la-1;
41     }
42     int flag=0;
43     for(int i=0;i<=l;i++)
44     {
45         if(an[i]>bn[i])
46         {
47             flag=1;
48             break;
49         }
50         if(an[i]<bn[i])
51         {
52             flag=2;
53             break;
54         }
55     }
56     if(flag==1)
57     {
58         for(int i=l;i>=0;i--)
59         {
60             an[i]-=bn[i];
61             while(an[i]<0&&i!=0)
62             {
63                 an[i]+=10;
64                 an[i-1]--;
65             }
66         }
67         for(int i=0;i<=l;i++)
68             cout<<an[i];
69         cout<<endl;
70     }
71     else if(flag==2)
72     {
73         for(int i=l;i>=0;i--)
74         {
75             bn[i]-=an[i];
76             while(bn[i]<0&&i!=0)
77             {
78                 bn[i]+=10;
79                 bn[i-1]--;
80             }
81         }
82         cout<<"-";
83         for(int i=0;i<=l;i++)
84             cout<<bn[i];
85         cout<<endl;
86     }
87     else
88         cout<<"0";
89     return 0;
90 }

做过很多遍了 再做一次

暴力解法

原文地址:https://www.cnblogs.com/yalphait/p/8485701.html

时间: 2024-11-06 03:54:48

18.2.28 codevs3115 高精度练习之减法的相关文章

18.2.28 codevs3115 高精度练习之乘法

题目描述 Description 给出两个正整数A和B,计算A*B的值.保证A和B的位数不超过500位. 输入描述 Input Description 读入两个用空格隔开的正整数 输出描述 Output Description 输出A*B的值 样例输入 Sample Input 3 12 样例输出 Sample Output 36 数据范围及提示 Data Size & Hint 两个正整数的位数不超过500位 1 #include <iostream> 2 #include <

C语言(7)--高精度加法、减法、乘法、今天是星期几、四位平方数、候选人选票问题

1.高精度加法.减法.乘法 #include <stdio.h> #include <string.h> #include <malloc.h> void plus(char *a,char *b,char *c);//自定义高精度加法函数 void sub(char *a,char *b,char *c);//自定义高精度减法函数 void multiply(char *a,char *b,char *c);//自定义高精度乘法函数 int main() { char

【CODEVS3115】高精度练习之减法

Description 给出两个正整数A和B,计算A-B的值.保证A和B的位数不超过500位. Input 读入两个用空格隔开的正整数 Output 输出A-B的值 Sample Input 3 12 Sample Output -9 Hint 两个正整数的位数不超过500位 #include<iostream> #include<cstdio> #include<cstring> using namespace std; char Sa[510],Sb[510]; i

wiki oi 3115高精度练习之减法

题目描述 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位 代码: 1 #include<stdio.h> 2 #include<

18.04.28 17年程设考试题

编程填空部分 A01:编程填空:统计动物数量 描述 代码填空,使得程序能够自动统计当前各种动物的数量 #include <iostream> using namespace std; // 在此处补充你的代码 void print() { cout << Animal::number << " animals in the zoo, " << Dog::number << " of them are dogs, &q

高精度加法,减法,乘法,除法

主要分为5个方面来开展: 1.高精度数的存储,我是按照<晴神宝典>的用一个包含int数组和表示长度int的struct bign来存储数据,当然了,为了方便,我们存储方向和我们正常的数字大小排列方向相反,我们是数组低位存放阶数小的数字,这样方便之后的计算 2.加法,加法应该就是直接模拟,记得用一个carry来存放进位就行了,其他的没有什么好说 2.减法,减法的话就是多了个向高处借位,既高一位的地方-1,自己位置+10,最后要消除前导0 4.乘法,乘法也是简单模拟,两个数的每一位和每一位相乘,然

3115 高精度练习之减法——http://codevs.cn/problem/3115/

第一部分:题目 题目描述 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<

高精度加法和减法。加法还好,减法花了不少时间。

加法: #include<stdio.h>#include<string.h>int a[1000]={0},b[1000]={0};int main(){ char *s1; int l1=0,l2=0,l,i; freopen("hp+.in","r",stdin); freopen("hp+.out","w",stdout); scanf("%s",s1); l1=strlen

QVM 实操记 - 18.12.28

视频回放地址:https://i.iamlj.com/mp4/QVM-IMC-12.27-1080P.mp4 目录 目录 常规开发部署流程 准备工作 开发准备 网站部署 操作步骤 重装系统 LANP环境安装 安装 WordPress Vhost配置[可选] FAQ 购买的主机怎么没 IP SSH 登录不上 端口 Ping 不通,通常是80或其他端口 其他业务方面的需求 密码怎么没了,登录 怎么重装系统啊,有没有 xx 最新的版本啊 重装系统,怎么还不进行啊,怎么需要开机? SSH 密钥是什么,怎