大整数的乘法问题
2013-04-02 18:24
190 查看
#include <iostream> using namespace std; void multiple(char A[], char B[], char C[]) { int TMP, lenA = -1, lenB = -1; while (A[++lenA]!='\0') ; while (B[++lenB]!='\0') ; int Index, start = lenA+lenB-1; // . for (int i = lenB-1; i >= 0; i--) { Index = start--; if (B[i]!='0') { int In = 0; for (int j = lenA-1; j >= 0; j--) { TMP = In+(B[i]-'0')*(A[j]-'0')+C[Index]-'0'; //要加上原有的数值。 In = TMP / 10; C[Index] = TMP % 10 + '0'; Index--; } C[Index] = In+'0'; //最后一次的进位问题 } } } int main() { char A[] = "21839244444444448880088888889"; char B[] = "38888888888899999999999999988"; cout<<"length of A is : "<<sizeof(A)<<endl; cout<<"length of B is : "<<sizeof(B)<<endl; char C[sizeof(A)+sizeof(B)-1]; //一个m位的数乘以一个n位的数,其结果小于等于m+n位。 for (int i = 0; i < sizeof(C)-1; i++) { C[i]='0'; //初始化时应该注意初始化为'0',而不是0。 } C[sizeof(C)-1]='\0'; cout<<"length of C is : "<<sizeof(C)<<endl; multiple(A,B,C); for (int i = 0; i < sizeof(C)-1; i++) { if (C[i] != '0') { cout<<C[i]; } } }
相关文章推荐
- 大整数乘法问题
- 大整数的乘法问题
- 大整数乘法问题的解决方法
- 算法之美--大整数乘法问题
- 大整数乘法问题(学习笔记)
- 分治法解决大整数乘法问题
- AtCoder Beginner Contest 085 C Otoshidama(计算机整数乘法问题+方程求解)
- 分治法来解决大整数乘法问题
- AtCoder Beginner Contest 085 C Otoshidama(计算机整数乘法问题+方程求解)
- AtCoder Beginner Contest 085 C Otoshidama(计算机整数乘法问题+方程求解)
- 大整数乘法问题
- AtCoder Beginner Contest 085 C Otoshidama(计算机整数乘法问题+方程求解)
- 分治法的应用(大整数乘法和Strassen矩阵乘法,最近点对问题和凸包问题)
- 大整数乘法,遇到的问题和解决方法
- AtCoder Beginner Contest 085 C Otoshidama(计算机整数乘法问题+方程求解)
- 大整数问题,乘法,加法,阶乘
- AtCoder Beginner Contest 085 C Otoshidama(计算机整数乘法问题+方程求解)
- 大整数的乘法问题
- 高精度正整数乘法问题
- AtCoder Beginner Contest 085 C Otoshidama(计算机整数乘法问题+方程求解)