随笔分类 -  初级算法学习 / 高精度

摘要:vector<int> Div(vector<int>& A, int& B) { vector<int>C; int T = 0;//除数 for (int i = A.size() - 1; i >= 0; i--)//注意,除法模拟是从最高位开始的 { T = T * 10 + A[i];// 阅读全文
posted @ 2023-04-25 20:47 凪风sama 阅读(30) 评论(0) 推荐(0)
摘要: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] 阅读全文
posted @ 2023-04-25 20:45 凪风sama 阅读(33) 评论(0) 推荐(0)
摘要:vector<int> Mul(vector<int>& A, int &B) { vector<int>C; int T = 0; for (int i = 0;i < A.size()||T/*考虑进位位未处理完*/;i++) { if(i<A.size()) T += A[i] * B; C. 阅读全文
posted @ 2023-04-25 20:39 凪风sama 阅读(26) 评论(0) 推荐(0)
摘要:vector<int> Add(vector<int>& A, vector<int>& B)//采用引用传入vector,避免将其全部复制传值,使用引用会更快 { if (A.size() < B.size())return Add(B , A);//由于有大小位数的处理,我们默认位数较大的那个去 阅读全文
posted @ 2023-04-25 20:38 凪风sama 阅读(24) 评论(0) 推荐(0)
摘要:可以知道在处理高精度乘法的时候,我们是不考虑当场进位的,在所有位数都模拟完竖式乘法后才进行逐位进位,这就要求存储每个位的数组保证不会爆掉溢出 众所周知char类型最多只能存储到255,非常非常容易溢出成负数,对于char型数组要考虑每一步乘法都要进位。 而int型数组最大21亿就不用考虑这种问题,当 阅读全文
posted @ 2023-04-18 23:01 凪风sama 阅读(42) 评论(0) 推荐(0)
摘要:这道题是数论加高精度,高精度倒好说,就是高精度乘法实现,模拟列竖式乘法,但是找出要乘的这几个数实属不容易,没学过数论,只能从题解中学怎么找规律这里引用一下洛谷题解区赞数最高的题解 不知道大家看其他的题解有没有产生很多问号??? (本题解修改了一些第一次提交发现的错误,感谢yhm12345同学指出。) 阅读全文
posted @ 2023-04-18 16:09 凪风sama 阅读(157) 评论(0) 推荐(0)
摘要:捏妈第三节的题单名不是循环结构吗,直接出了第八节的高精度大数计算,紧急学习 对于较大数的加减乘除阶乘等,C/C++原生的数据类型是存储不了的(即便用longlong),直接计算会出现数据移除成负数的结果 为了解决这类超大数的运算,我们选择用字符数组或者整型数组来进行模拟运算。 所谓模拟运算也就是把大 阅读全文
posted @ 2023-03-29 17:31 凪风sama 阅读(59) 评论(0) 推荐(0)
摘要:洛谷P1009的大数阶乘和促使我学会了大数阶乘以及大数加法,连夜赶忙看了下大数乘法的思路就顺便写了一下 大数乘法的思路也和加法相似,都是模拟竖式运算,这里我们开大数组,用数组的每一位模拟大数字的每一位数 然后定义两个数组First和Last来存储要运算的两个大数,Answer数组来存储运算的结果 相 阅读全文
posted @ 2023-03-29 17:30 凪风sama 阅读(56) 评论(0) 推荐(0)