uva10106 (高精度乘法)
来源:互联网 发布:直通车钻展淘宝客 编辑:程序博客网 时间:2024/05/16 08:34
题意: 高精度乘法。
思路: 直白的高精度乘法。 核心代码是 乘 的那部分。经常忘记。
算法复杂度: o(N^2) N是数的位数。
代码:
#include <cstdio>#include <cstring>using namespace std;#define MAX_N 1000void toDigit(char *str, int *digit){int len = strlen(str);for (int i = 0, j = len - 1; i < len; i++, j--) {digit[i] = (int)(str[j] - '0');}}int main(){char strNumA[MAX_N], strNumB[MAX_N];while (scanf("%s%s", strNumA, strNumB) == 2) {int dgtNumA[MAX_N], dgtNumB[MAX_N], rslt[MAX_N];memset(dgtNumA, 0, sizeof(dgtNumA));memset(dgtNumB, 0, sizeof(dgtNumB));memset(rslt, 0, sizeof(rslt));int lenA = strlen(strNumA);int lenB = strlen(strNumB);if (strNumA[0] == '0' || strNumB[0] == '0') {printf("0\n");continue;}toDigit(strNumA, dgtNumA);toDigit(strNumB, dgtNumB);for (int i = 0; i <= lenA; i++) {int s = 0;for (int j = 0; j <= lenB; j++) {s = rslt[i+j] + s + dgtNumA[i] * dgtNumB[j];rslt[i+j] = s % 10;s = s / 10;}}int i = MAX_N;while (i >= 0 && rslt[--i] == 0);while (i >= 0) {printf("%d", rslt[i--]);}printf("\n");}return 0;}
- uva10106高精度乘法
- uva10106 (高精度乘法)
- uva10106 高精度
- UVA10106大数乘法
- Uva10106--高精度乘法的三种方法与多语言实现
- uva10106
- UVA10106
- uva10106
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- [转]从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA
- 关于Linux container_of用法
- G - Alice, Bob and Chocolate
- 30大最有影响力的Web设计与开发英文博客
- java编程思想笔记--内部类部分五
- uva10106 (高精度乘法)
- Spring JDBC 插入和访问 oracle LOB 数据的具体过程
- system2之:4-LVM逻辑卷管理(下)
- [转]从B树、B+树、B*树谈到R 树
- 移动游戏,谁的天下?
- EZGUI下载
- Android 后台推送问题
- 如何学好C语言
- jquery得到子孙节点变通方法