当前位置: 首页 > news >正文

网站建设中源代码百度搜索一下百度

网站建设中源代码,百度搜索一下百度,网站后缀名,无锡知名网站推广加法: 大整数该如何储存? 用数组储存: 把个位放在数下标为0的位置,十位放在数组下标为1的位置(也就是高位放在数组的后面) 因为这样,如果需要增加一位最高位,那我们就可以直接在…

加法:

大整数该如何储存?

用数组储存:

把个位放在数下标为0的位置,十位放在数组下标为1的位置(也就是高位放在数组的后面)

因为这样,如果需要增加一位最高位,那我们就可以直接在vector数组的最后push_back最高位到结果数组即可。如果数组低位存的是数的高位,那么我们进行这个操作的时候就需要往后一个一个移动数组,效率很慢。

例题:

#include<bits/stdc++.h>
using namespace std;
vector<int> add(vector<int> &A,vector<int> &B)
{vector<int> C;int t = 0;//用来存每一位的进位,以及用来储存每一位相加后的结果for(int i=0;i < A.size()||i < B.size();i++){if(i < A.size()) t+= A[i];if(i < B.size()) t+=B[i];C.push_back(t % 10);t/=10;//转化为进位数}if(t) C.push_back(t);//如果需要再进位,就需要增加最高位return C;
}
int main()
{string a,b;cin>>a>>b;vector<int> A,B;for(int i=a.size()-1;i>=0;i--) A.push_back(a[i] - '0');for(int i=b.size()-1;i>=0;i--) B.push_back(b[i] - '0');auto C = add(A,B);for(int i=C.size() - 1;i>=0;i--) cout<<C[i];return 0;
}

减法:

总体思路:

减法和加法一样,是在数组下标小的位置储存位数小的数字

首先我们需要先判断数字A和数字B的大小,可以从高开始判断。如果大于等于直接计算A-B,否则就计算B-A,添加一个负号。

在执行减法的算法中,我们不难发现如果高位已经为0的时候就会出现前导0,例如100-97=3,在数组中储存的是003,所以我们需要去除前导0,恰好前导0刚好在数组的末尾也就是C.back()。我们只需要循环执行,如果末尾是0就pop()

例题 

#include<bits/stdc++.h>
using namespace std;
string a,b;
vector<int> A,B;
bool cmp()//判断A是否>=B 
{if(A.size()!=B.size()) return A.size()>B.size();else{for(int i=A.size()-1;i>=0;i--){if(A[i]!=B[i]){return A[i] > B[i];}}}return true;
}vector<int> sub(vector<int> &A,vector<int> &B)
{vector<int> C;int t = 0;for(int i=0;i < A.size();i++){//减去借位 t = A[i] - t;//一定要判断对应要减去的数字是否存在,在进行减法 if(i < B.size()){t-=B[i];}//把每一位的结果转化为正数后加入结果数组中 C.push_back((t + 10) % 10);//如果t<0说明需要借位,t设为1 if(t < 0) t = 1;else t = 0;}//移除前导0,最高位都在数组的最后 while(C.size()>1&&C.back()==0) C.pop_back();return C;
}
int main()
{cin>>a>>b;for(int i=a.size()-1;i>=0;i--) A.push_back(a[i] - '0');for(int i=b.size()-1;i>=0;i--) B.push_back(b[i] - '0');//比较A和B的大小,如果A>B就直接计算A-B的大小,否则就计算B-A,加上一个负号 if(cmp()){auto C = sub(A,B);for(int i=C.size() - 1;i>=0;i--) cout<<C[i];}else{auto C = sub(B,A);cout<<"-";for(int i=C.size() - 1;i>=0;i--) cout<<C[i];}return 0;
}

除法:

整体思路:

  • 逐位模拟除法

手工长除法的核心步骤是逐位计算商和余数。为了实现这种逐位的计算过程,我们从被除数的最高位开始处理。每次将当前处理的数字(即当前位)与前一次计算的余数组合,构成一个新的“被除数”。

  • 商和余数的计算

每次构成新的“被除数”后,将它除以除数,得到商的当前位,余数则留给下一位继续处理。每一位的商计算完成后,商值存储下来,余数用于下一轮的计算。

  • 反转商的顺序

由于我们是从被除数的高位向低位处理,计算过程中得到的商是倒序的(即最低位商最先被计算出)。在最终输出时,需要将计算得到的商反转,才能得到正确的顺序。

  • 去除前导零

计算过程中可能会出现前导零(例如当某些高位不足以大于除数时,商位可能为零)。为了保证输出格式正确,需要在最终输出商时移除这些前导零。

例题:

#include<bits/stdc++.h>
using namespace std;
string a;
int b,r; //r是余数 
vector<int> A;vector<int> div() {vector<int> C;//商 for(int i=A.size() - 1;i>=0;i--){r = r*10 +A[i];C.push_back(r / b);r = r % b;}//由于计算过程从低位到高位逐步推进最初得到的结果向量 C 是倒序的(即最高位在最前面)。//为了得到一个正常顺序的结果(即最高位在最后面),需要将 C 中的元素顺序反转reverse(C.begin(),C.end());// 移除结果中的前导零while (C.size() > 1 && C.back() == 0) {C.pop_back();}return C;
}int main() {cin >> a >> b;for(int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0');auto C = div();for(int i = C.size() - 1; i >= 0; i--) cout << C[i];cout<<endl<<r<<'\n';//输出余数 return 0;
}

 乘法:

详细思路:

  1. 逐位相乘

将被乘数的每一位与乘数逐一相乘,并且从低位开始处理。这相当于我们手工计算乘法时,按位进行乘法运算。

  1. 进位处理

每次计算一位的结果时,可能会产生一个进位。例如,计算某一位时结果可能是 13,则当前位为 3,进位 1。这个进位要加到下一位的计算中。

  1. 移除前导零

乘法运算可能产生一些前导零,尤其是在乘数是 0 或者被乘数中某些高位为 0 的情况下。我们需要在输出之前移除这些前导零。

例题:

#include<bits/stdc++.h>
using namespace std;
string a;
int b; 
vector<int> A;
​
vector<int> Mul() {vector<int> C;int t = 0;//进位 // for(int i = 0; i < A.size() || t; i++) {if(i < A.size()) t += A[i] * b;C.push_back(t % 10);t /= 10;}// 移除结果中的前导零while (C.size() > 1 && C.back() == 0) {C.pop_back();}return C;
}
​
int main() {cin >> a >> b;for(int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0');auto C = Mul();for(int i = C.size() - 1; i >= 0; i--) cout << C[i];return 0;
}
​

解释乘法算法的for循环停止条件

i小于A.size()时,循环继续,处理A中的每一位数字。

i等于或大于A.size()时,只要t不为0(即还有未处理完的进位),循环也会继续。这确保了所有的进位都被正确处理,直到没有新的进位产生。

http://www.ds6.com.cn/news/16834.html

相关文章:

  • 简述网站开发的基本流程网络营销前景和现状分析
  • dede 手机网站插件sem运营是什么意思
  • 网站建设与运营公司的市场开发方案互联网广告平台代理
  • 网站建设主结构西安市网站
  • 网站搭建徐州百度网络b站推广网站2024年不用下载
  • 微信网站开发平台泰州seo
  • 网站设计的工具如何开发软件app
  • css网站开发实录seo网站推广的主要目的是什么
  • 中国建设劳动学会官方网站怎么推广游戏叫别人玩
  • 标题翻译为英文wordpress搜索引擎排名优化seo课后题
  • 网页设计学生作业步骤seo推广费用需要多少
  • 跨境电商网站建设方案书高端网站优化公司
  • 网站开发经典案例国际外贸网络交易平台
  • 在线设计图案网站的seo 如何优化
  • 淘宝客网站怎么做最有效的15个营销方法
  • 登不上学校的网站该怎么做jsurl中文转码
  • 大型企业网站建设如何做一个自己的网站呢
  • 菏泽做网站推广南京seo网站优化推广
  • 潍坊个人做网站的公司网络营销文案策划都有哪些
  • 贵州建设厅网站备案人员查询域名注册网站哪个好
  • 网站建设地图怎么设置网站seo优化运营
  • 为什么公司网站打不开营销推广方式有哪些
  • asp网站可运行jsp吗建网站怎么赚钱
  • 网站新闻怎么写电脑优化软件哪个好用
  • 做网站国内阿里云虚拟主机多少钱百度账号人工客服
  • 网站建设项目收获搭建一个网站的流程
  • 深圳网站开发工程师全媒体广告加盟
  • 网站案例上海南宁seo网站排名优化公司
  • 做性的网站抖音关键词优化
  • 桥西做网站有没有专门做策划的公司