49. 搜狗面试题: 大数相乘算法
2023-09-11 14:14:43 时间
分析:
大数能大到整形类型存储不了。须要借助于其它的算法,来完毕乘法运算。
能够使用口算乘法的步骤来模拟乘法操作。例如以下:
123
* 122
=
3 4 6
+ 3 4 6
+ 1 2 3
= 1 5 0 0 6
实现例如以下:
#include<iostream> #include<string.h> using namespace std; char* MutiBigerNum(char* a, char* b) { int len1 = strlen(a); int len2 = strlen(b); char* res = new char[len1 + len2 + 1]; memset(res, '0', len1+len2); for(int i=len1-1; i >= 0; i-- ) { int carry = 0; for(int j = len2 -1; j >= 0; j--) { int temp = (res[i + j+ 1] - '0') + carry + (a[i] - '0')*(b[j] - '0'); carry = 0; if(temp >= 10) { carry = temp/10; } res[i+j+1] = temp%10 + '0'; } res[i] = carry + '0'; } return res; } int main(int argn, char** argv) { char *a = "122"; char *b = "123"; if(argn > 2) { a = argv[1]; b = argv[2]; } char* resnum = MutiBigerNum(a, b); if(strlen(resnum) > 0 && resnum[0] == '0') cout << a << "*" << b << "=" << resnum + 1 << endl; else cout << a << "*" << b << "=" << resnum << endl; return 0; }
执行结果例如以下:
./test
122*123=15006
./test 999 888
999*888=887112
相关文章
- 【测试面试题】页面很卡的原因分析及解决方案
- 金三银四求职季,APP面试题放送
- 测试开发基础 | Python 算法与数据结构面试题系列一(附答案)
- 百度Mysql面试题总结
- 拼多多面试题——算法实习生
- 机器学习面试题——KNN(K Nearest Neighbors)K近邻分类算法
- 软件测试之性能测试面试题合集(含答案分析细节)
- 测试员的算法面试题-找众数
- 数据结构与算法面试题(2022最新版)
- 这份算法宝典让你横扫各大厂算法面试题
- 【算法篇】四种链表总结完毕,顺手刷了两道面试题紧张的羊
- 面试题:你知道跳表吗
- 面试题:Tomcat为什么要重写类加载器
- 面试题:TLAB
- 栈和队列面试题讲解
- 2022春招前端最新面试题分享(多益网络)
- 那些著名或非著名的iOS面试题-前编
- Java高频面试题合集——【Java基础、IO流、Java异常、Java集合、Java并发】高频面试题汇总
- Unity 面试题汇总(六)常用的一些几何算法
- Spring 面试题(一):Spring 如何处理全局异常?