C算法模板->大数减法
2022/1/8 20:07:10
本文主要是介绍C算法模板->大数减法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <map> using namespace std; bool cmp(vector<int>& A, vector<int>& B) //判断是否A >= 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 1; } vector<int> sub(vector<int>& A, vector<int>& B) { vector<int> C; for (int i = 0, t = 0; i < A.size(); i++) { t = A[i] - t; if (i<B.size()) t -= B[i]; C.push_back((t + 10) % 10); if (t < 0) t = 1;//判断是否退位 else t = 0; } while (C.size() > 1 && C.back() == 0) //去掉前导0 C.pop_back(); return C; } int main() { string a, b; vector<int> A, B; 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'); if (cmp(A, B)) { auto C = sub(A, B); for (int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]); } else { auto C = sub(B,A); printf("-"); for (int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]); } return 0; }
总体思路
- cmp函数判断 A >= B
- 根据A B 的大小来分情况输出答案的正负
- 退位时 t == 1
some details
![image-20220103114327323](/upload/202201/08/202201082007091514.png)
![image-20220108183722018](/upload/202201/08/202201082007093730.png)
这篇关于C算法模板->大数减法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26终极指南:Scrum中如何设置需求优先级
- 2024-06-26AI大模型企业应用实战(25)-为Langchain Agent添加记忆功能
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding
- 2024-06-23AI大模型企业应用实战(15)-langchain核心组件
- 2024-06-23AI大模型企业应用实战(16)-langchain核心组件
- 2024-06-23AI 大模型企业应用实战(06)-初识LangChain
- 2024-06-19EntBot.ai: AI Website Chatbot for Product Guides and Development Doc
- 2024-06-17zero-shot-learning-definition-examples-comparison
- 2024-06-06Package Easy(基于 NSIS 的打包exe安装包工具)使用方法-icode9专业技术文章分享