1.6 编程基础之一维数组 11 大整数减法
1.6编程基础之一维数组 11 大整数减法 方法二
http://noi.openjudge.cn/ch0106/11/
1169:大整数减法
http://ybt.ssoier.cn:8088/problem_show.php?pid=1169
C++有错误的代码:
//program p5_02
/*
第2课 减法神童(subtract)
*/
#include <bits/stdc++.h>
using namespace std;const int maxL=200+10;string s1,s2;
int lena,lenb,lenc;
int a[maxL],b[maxL],c[maxL]; void subtract(int a[],int lena,int b[],int lenb,int c[],int &lenc)
{memset(c,0,sizeof(c));lenc=lena;for(int i=0;i<lenc;++i){c[i]=a[i]-b[i];if(c[i]<0){//向前一位借1 --c[i+1];c[i]+=10;}}//删除前导0 for(; lenc>1 && c[lenc-1]==0;--lenc){;}
}
int main( void )
{cin>>s1>>s2;//1、预处理部分lena=s1.length();lenb=s2.length();//s1所表示的数比S2小的情况 if(lena<lenb || (lena==lenb && s1<s2)) {swap(s1,s2);swap(lena,lenb);cout<<'-';}//存储字符串s1到数组a for(int i=0;i<lena;++i){a[i]=s1[lena-i-1]-'0';}//存储字符串s2到数组b for(int i=0;i<lena;++i){b[i]=s2[lena-i-1]-'0';}subtract(a,lena,b,lenb,c,lenc);for(int i=lenc-1;i>=0;--i){cout<<c[i];}cout<<endl;return 0;
}
C++ AC代码一:
/*
1.6编程基础之一维数组 11 大整数减法 方法二
http://noi.openjudge.cn/ch0106/11/1169:大整数减法
http://ybt.ssoier.cn:8088/problem_show.php?pid=1169C++ 中指针和引用的区别
https://www.runoob.com/w3cnote/cpp-difference-between-pointers-and-references.html浅谈C++中指针和引用的区别
https://www.cnblogs.com/dolphin0520/archive/2011/04/03/2004869.html
*/
#include <bits/stdc++.h>
using namespace std;const int maxL=200+1;string s1,s2;//gets()函数 这个函数尽量不要用 不安全
int lena,lenb,lenc;
int a[maxL],b[maxL],c[maxL]; void subtract(int a[],int lena,int b[],int lenb,int c[],int &lenc)
{memset(c,0,sizeof(c));lenc=lena;for(int i=0;i<lenc;++i){c[i]=(a[i]-b[i]);if( c[i]<0 ){--a[i+1];c[i]+=10;}}//cout<<"lenc="<<lenc<<endl;
}int main( void )
{cin>>s1>>s2;lena=s1.length();lenb=s2.length();//cout<<"lena="<<lena<<<<endl//cout<<lenb<<endl;//s1所表示的数比s2的情况 if(lena<lenb || (lena==lenb && s1<s2)) {swap(s1,s2);swap(lena,lenb);cout<<'-';}/*for(int i=0;i<lena;++i){a[i]=s1[lena-i-1]-'0';}*/for (int i=0;i<=lena-1;i++) a[i]=s1[lena-i-1]-'0';for (int i=0;i<=lenb-1;i++) b[i]=s2[lenb-i-1]-'0';/*for(int i=0;i<lena;++i){b[i]=s2[lena-i-1]-'0';}*/subtract(a,lena,b,lenb,c,lenc);//删除前导0 for(; lenc>1 && c[lenc-1]==0;--lenc);for(int i=lenc-1;i>=0;--i){cout<<c[i];}cout<<endl;return 0;
}
C++ AC代码二:
/*
1.6编程基础之一维数组 11 大整数减法 方法一
http://noi.openjudge.cn/ch0106/11/1169:大整数减法
http://ybt.ssoier.cn:8088/problem_show.php?pid=1169
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{string a1,b1;//char a1[300],b1[300];int a[300],b[300],c[300],lena,lenb,lenc,i,x;memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));cin>>a1>>b1; //gets(a1);//gets(b1); //输入加数与被加数lena=a1.size();lenb=b1.size();for (i=0;i<=lena-1;i++) a[lena-i]=a1[i]-'0'; //加数放入a数组for (i=0;i<=lenb-1;i++) b[lenb-i]=b1[i]-48; //加数放入b数组i=1;while (i<=lena||i<=lenb){if (a[i]<b[i]){a[i]+=10; //不够减,那么向高位借1当10a[i+1]--;}c[i]=a[i]-b[i]; //对应位相减i++;}lenc=i;while ((c[lenc]==0)&&(lenc>1)) lenc--; //最高位的0不输出 for (i=lenc;i>=1;i--) cout<<c[i]; //输出结果cout<<endl;return 0;
}
python3代码:
"""1.6编程基础之一维数组 11 大整数减法
http://noi.openjudge.cn/ch0106/11/"""a=int(input())b=int(input())print(a-b)
1.6 编程基础之一维数组 11 大整数减法相关推荐
- 1.6编程基础之一维数组 10大整数加法
1.6编程基础之一维数组 10大整数加法 OpenJudge - 10:大整数加法 1168:大整数加法 信息学奥赛一本通(C++版)在线评测系统 P1601 A+B Problem(高精) A+B ...
- 1.6 编程基础之一维数组 05 年龄与疾病 python
http://noi.openjudge.cn/ch0106/05/ """ 1.6 编程基础之一维数组 05 年龄与疾病 http://noi.openjudge.cn ...
- 1.6 编程基础之一维数组 03 计算书费 python
http://noi.openjudge.cn/ch0106/03/ """ 1.6 编程基础之一维数组 03 计算书费 http://noi.openjudge.cn/ ...
- 1.6编程基础之一维数组_09向量点积计算
http://noi.openjudge.cn/ch0106/09/ /* 1.6编程基础之一维数组_09向量点积计算--AC http://noi.openjudge.cn/ch0106/09/ * ...
- 1.6编程基础之一维数组_01与指定数字相同的数的个数
http://noi.openjudge.cn/ch0106/01/ /* 1.6编程基础之一维数组_01与指定数字相同的数的个数 http://noi.openjudge.cn/ch0106/01/ ...
- 1.6编程基础之一维数组_04数组逆序重放
http://noi.openjudge.cn/ch0106/04/ /* 1.6编程基础之一维数组_04数组逆序重放 http://noi.openjudge.cn/ch0106/04/总时间限制: ...
- python编程基础之一维数组
python编程基础之一维数组 石头剪刀布 描述: 石头剪刀布是常见的猜拳游戏. 石头胜剪刀,剪刀胜布,布胜石头. 如果两个人出拳一样,则不分胜负.一天,小A和小B正好在玩石头剪刀布. 已知他们的出拳 ...
- 1.13 编程基础之综合应用 47 大整数除法方法 python
http://noi.openjudge.cn/ch0113/47/ """ 1.13 编程基础之综合应用 47 大整数除法方法一 http://noi.openjudg ...
- NOI / 1.6编程基础之一维数组01:与指定数字相同的数的个数
题目: 输出一个整数序列中与指定数字相同的数的个数. http://noi.openjudge.cn/ch0106/01/ 解题思路: int一个列表,从0到105. int n. 重复输入列表中的数 ...
最新文章
- JavaWeb学习总结(九)--JDBC入门
- 云计算,拼的就是运维
- 字符斜杠是合法常量吗_【面试秘籍】你对String的intern方法了解吗
- [渝粤教育] 东南大学 工程热力学 参考 资料
- javascript中打印对象显示[object object]_js如何打印object对象
- python排序问题_Python简单处理坐标排序问题示例
- Atitit 给投资人的回报 目录 1.1. 经济回报(略)	1 2. 精神文化与学术回报	1 2.1. 提升自我 投资人可以在我们的教育体系提升自我学术水平	1 2.2. 对自己感兴趣的学术领
- 微信h5开发网页授权-本地如何开发调试?
- 18.10.29 POJ 3987 Computer Virus on Planet Pandora(AC自动机+字符串处理)
- everedit 格式化json_[原创]Everedit的试用限制绕过
- 解析解【闭式解(closed-form solution)】和数值解
- 怎么把桌面文件发到计算机文件夹E,怎么把桌面文件默认到d盘
- 关于DBC文件的格式解析(DBC文件系列其二)
- 宋宝华- KVM最初的2小时(KVM从入门到入不了门)
- SpringBoot 入坑(九)Docker (容器路径挂载)resource busy 问题
- 发文章,找自己专业学术期刊的“大牛”才好
- Linux学习笔记——Linux、命令 01
- 使用Python制作一个照片换底色的exe程序文件(详细教程)
- 大规模数据集的读存技巧
- 计算机在教学中的作用论文开题报告,实验在科学教学中的作用【开题报告+文献综述+毕业论文】...