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

网站命名方式wordpress下载面板美化

网站命名方式,wordpress下载面板美化,产品设计说明模板,贵阳做网站的目录 1. 基础知识 2. 大整数 大整数 3. 大整数 - 大整数 1. 基础知识 利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了&#xff0c…

目录

1. 基础知识

2. 大整数 + 大整数

3. 大整数 - 大整数


1. 基础知识

利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了,但因受到硬件的限制,往往达不到实际问题所要求的精度。我们可以利用程序设计的方法去实现这样的高精度计算。

这里我们要介绍:大整数 + 大整数,大整数 - 大整数,大整数 * 小整数,大整数 / 小整数。

大整数显然用简单的数据类型是无法表示的。所以我们选用数组来存储大整数的每一位。于是,就产生了这么一个问题:数组下标为0的元素是存最高位还是最低位呢?

显然,我们在运算过程中可能会发生进位,这时,如果我们用第一种(下标为0存最高位),在运算过程中最高位发生进位时,就需要在数组的前面添加一个新的位置来存放产生的进位。这就需要将数组的元素整体向后移动,这很麻烦。所以我们选用第二种方式来存储大整数(下标为0存最低位),这样在产生进位时我们只需要在数组的后面添加一个位置即可。这是非常容易滴。

2. 大整数 + 大整数

我们可以从人类计算加法的方法中找出做加法的规律:

下面以 345678 + 6789 距离分析:我们将存储进位的变量 carry 初始化为0,然后让 carry 去与两个大整数的个位相加,即 0 + 8 + 9 = 17,将得到的结果 17 对 10 取模,得到相加后的个位:7,push_back到存放结果的数组,然后继续将相加后的结果17除以10,作为下一位相加的进位。依次类推,直到将两个大整数的每一位相加。

#include<iostream>
#include<vector>
using namespace std;//传引用可以提高效率,不用copy一遍数组了
vector<int> add(vector<int>& A, vector<int>& B)
{//存放结果的数组vector<int> C;//用来记录进位的变量,初始化为0int carry = 0;//对两个大整数的对应位置的数相加for (int i = 0; i < A.size() || i < B.size(); i++){//因为两个大整数的长度可能有差异,当一个大整数的每一位加完了,就不需要继续了if (i < A.size())carry += A[i];if (i < B.size())carry += B[i];C.push_back(carry % 10);carry /= 10;}//如果最高位相加有进位(只可能是1,push_back 1 也行),再将进位push_backif (carry){C.push_back(carry);}return C;}void test01()
{//两个大整数以字符串的形式输入string a, b;cout << "请输入两个整数,以回车键结束" << endl;cin >> a >> b;//两个数组用来存放大整数的每一位vector<int> A, B;//将输入的大整数的每一位拆分后添加到数组//数字字符 - '0' 即可得到数字字符对应的数字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');}//用一下大整数加法的接口,并且用C接收最终结果vector<int>C = add(A, B);cout << "相加的结果:";//输出结果for (int i = C.size() - 1; i >= 0; i--){printf("%d", C[i]);}cout << endl;
}int main()
{//大整数的加法test01();system("pause");return 0;
}

3. 大整数 - 大整数

大整数减去大整数用户可能输入的是一个较小的大整数减去一个较大的大整数,我们就需要先进行一个比较,确保我们在做减法时是大的数减去小的数,如果需要在最终的结果上加上负号即可。

与大整数加大整数类似,对两个大整数的每一位做减法,显然这时有两种情况:当减数小于被减数,此时就需要向前借一位,而当减数大于等于被减数则不需要进位。

 这里还有一个问题就是:相减的结果在打印时可能会有先导0,例如:12345 - 12300 在没有去掉先导0,得到的结果就是:00045,这显然不是我们想要的。我们需要对存放结果的数组的最后一个元素进行判断,如果该元素为0,就需要将其pop掉。但是如果相减的最终结果是0,这样做存放结果的数组里面将没有元素了,所以我们需要保证存放结果的数组中至少有一个元素。

bool cmp(vector<int>& A, vector<int>& B)
{//先比较两整数的长度if (A.size() != B.size()){return A.size() - B.size();}//从最高位开始比较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 borrow = 0;for (int i = 0; i < A.size(); i++){//减数减去借位borrow = A[i] - borrow;//当i不小于被减数的大小就不用做减法了if (i < B.size())borrow -= B[i];//利用一般规律push_back结果C.push_back((borrow + 10) % 10);//有借位borrow置为1if (borrow < 0)borrow = 1;elseborrow = 0;}//去掉先导0while (C.size() > 1 && C.back() == 0){C.pop_back();}return C;
}void test02()
{//两个大整数以字符串的形式输入string a, b;cout << "请输入两个整数,以回车键结束" << endl;cin >> a >> b;//两个数组用来存放大整数的每一位vector<int> A, B;//将输入的大整数的每一位拆分后添加到数组//数字字符 - '0' 即可得到数字字符对应的数字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');}//对两个大整数做判断,确保是大数 - 小数if (cmp(A, B)){//用一下大整数加法的接口,并且用C接收最终结果vector<int>C = sub(A, B);cout << "相减的结果:";//输出结果for (int i = C.size() - 1; i >= 0; i--){printf("%d", C[i]);}cout << endl;}else{//用一下大整数加法的接口,并且用C接收最终结果//如果B > A,交换位置传参即可,最后输出数据的时候加上负号vector<int>C = sub(B, A);cout << "相减的结果:";//输出结果cout << "-";for (int i = C.size() - 1; i >= 0; i--){printf("%d", C[i]);}cout << endl;}}int main()
{//大整数的减法test02();system("pause");return 0;
}
http://www.yayakq.cn/news/895186/

相关文章:

  • 万网注册域名seo1域名查询
  • 沈阳网站seo外包樟木头做网站
  • 网页设计与网站开发的卷子wordpress主题如何升级
  • 南宁月嫂网站建设做网站如何适配手机
  • 广州网站设计出名 乐云践新wordpress企业官网插件
  • 借助开源系统快速建实用网站网站编辑做的准备
  • 哪个网站推广比较好苏州吴江建设局招标网站
  • 长春网站建设路做玩游戏任务得q币的网站
  • 网站做等保纪检监察网站建设情况汇报
  • 哈尔滨 高端网站建设wordpress文章页幻灯片
  • 58百度搜索引擎四川网站建设seo
  • 国家精品课程建设工作网站怎么制作网址内容
  • 楚雄 网站建设做房产推广那个网站好
  • 360建设网站免费下载提供免费主页空间的网站
  • 门户网站要用什么软件做如何制作app客户端
  • 网站套站不一样的婚恋网站怎么做
  • 企业网站源码带后台管理网站怎么做架构图
  • 企业网站建设要求标准说明qq小程序下载
  • wordpress的站点地址如何配置网站建设招标书模板
  • 网站 手机案例阿里云clouder网站建设
  • 百度网站上做推广受骗宁夏建设教育协会网站
  • 网站开发需要技术如何把网站放到百度
  • 沧州英文模板建站国内可访问的海外网站和应用
  • 制作宝安网站建设建筑工程证书查询
  • 东安网站建设建筑人才招聘网站
  • 网站开发不用jspwin7系统下动网站建设
  • 只做画册的网站网站制作作业
  • 北京专业网站设计制作竟标网站源码
  • asp.net 价格查询网站郑州网站推广电话
  • 怎么选择一个好的友情链接网站展示型网站建设服务