大数相乘
来源:互联网 发布:社交软件英语 编辑:程序博客网 时间:2024/06/05 09:47
c++实现大数相乘问题
#include <algorithm>#include <string>#include <iterator>#include <iostream>
using namespace std;string multiply( string A, string B){ int m = A.size(); int n = B.size(); if (m == 0 || n == 0) return string(); string result(m+n, '0'); int multiFlag; // 乘积进位 int addFlag; // 加法进位 for(int i=n-1; i >= 0; i--) // B的每一位 { multiFlag = 0; addFlag = 0; for(int j=m-1; j >= 0; j--) // A的每一位 { // '0' - 48 = 0 int temp1 = (A[j] - 48) * (B[i] - 48) + multiFlag; multiFlag = temp1 / 10; temp1 = temp1 % 10; int temp2 = (result[i+j+1] - 48) + temp1 + addFlag; addFlag = temp2 / 10; result[i+j+1] = temp2 % 10 + 48; } result[i] += multiFlag + addFlag; } auto p = result.find_first_not_of('0'); if (p != string::npos) return result.substr(p); return "0";}int main(){ string A = ""; string B = "0"; string res = multiply(A, B); cout << res << endl; return 0;}
1 0
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- Linux文件管理(3)——文本编辑vi/vim
- dubbo提供方与消费方的三种连接方式
- A*
- oracle 数据库 50道经典例题
- s5pv210——LCD的原理和实战
- 大数相乘
- SpringBoot集成篇(一)无状态shiro
- mysql索引总结
- Android的异或加密解密算法解析
- 解析算术表达式
- C++PRIMER第一轮复习第九章 顺序容器
- git上传项目到github的常用命令
- 【java证书】JDK自带工具keytool生成ssl证书(第三步clinet有误,是client1)
- Glide