大数相乘
来源:互联网 发布:安卓福利软件 编辑:程序博客网 时间:2024/05/20 23:03
比较大的两个数相乘,采用字符运算,按位相乘,控制好进位就可以了。
相关示例参考:可怕的阶乘
//大数相乘#include<iostream>using namespace std;#define max 100void CalcNN(char *A,char *B,char *C){if(NULL==A||NULL==B){return;}int len_a=strlen(A);int len_b=strlen(B);int len_c=0;if((len_a==1&&A[0]=='0')||(len_b==1&&B[0]=='0')){C[0]='0';C[1]='\0';return;}int bit[max]={0};for(int i=len_a-1;i>=0;i--){for(int j=len_b-1;j>=0;j--){bit[(len_a+len_b-2)-(j+i)]+=((A[i]-'0')*(B[j]-'0'));//按位相乘}}for(int i=0;i<max;i++){if(bit[i]>9){for(int k=i;k<max&&bit[k]>9;k++)//计算进位{bit[k+1]+=(bit[k]/10);bit[k]=(bit[k]%10);}}}int len=max-1;while(bit[len]==0){len--;}for(int i=len;i>=0;i--){C[len_c++]=bit[i]+'0';}C[len_c]='\0';}int main(){char A[max]={0};char B[max]={0};char C[max]={0};while(1){cout<<"乘数:";gets(A);cout<<"乘数:"; gets(B); CalcNN(A,B,C);cout<<"积 :"; puts(C);}system("pause");return 0;}运行结果:
0 0
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 【转】从1.5k到18k, 一个程序员的5年成长之路
- PHP之目录操作
- Java学习基础之继承、抽象、接口
- Java学习日记(一)关键字、标识符、注释、常量与变量、运算符、转义字符
- 百度地图API学习总结
- 大数相乘
- ASP.NET 无法创建新用户,提示密码最短长度为 7,其中必须包含以下非字母数字字符: 1
- 排序——选择排序
- 第4周项目3用对象数组操作长方柱类
- 操作系统课程设计——pintos源码的分析与修改
- Web Service学习笔记(webservice、soap、wsdl、jws详细分析)
- 简单计算器(利用函数数组指针)带图片
- Zabbix2.4 on Redhat6.4安装成功步骤记录
- 字符串流 istringstream 和 ostringstream 的用法