大数相乘
来源:互联网 发布:京东词条优化 编辑:程序博客网 时间:2024/05/18 01:50
/****** big_int_mult.h ****/#define _BIG_INT_MULT_H#include<iostream>#include<string.h>using namespace std;void reverse(char chr[],int l){//颠倒数组 int i; char temp; for(i=0;i <= l/2;i++){//首尾交换 temp=chr[i]; chr[i]=chr[l-i]; chr[l-i]=temp; }}int multiple(char a[],char b[],int result[]){//函数返回值是乘积的长度 int la,lb,lresult;//a,b及result的位数-1 int i,j;//循环控制变量 int temp; la=strlen(a)-1;//初始化最后一位lasta,lastb lb=strlen(b)-1; reverse(a,la);//将a,b颠倒,下面从个位数开始算起 reverse(b,lb); for(i=0;i <= la;i++) for(j=0;j <= lb;j++){ //精华所在,+=用于处理进位 result[i+j]+=(a[i]-48)*(b[j]-48);//-48是减去字符'0'的ASCII值 result[i+j+1]+=result[i+j]/10;//进位 result[i+j]%=10;//自己留的数 } lresult=i+j+1;//结果长度最多为i+j+1 while(result[lresult] == 0) lresult--;//没有达到长度最多的情况,逆序,高位在后 if(lresult < 0 ){result[0]=0;lresult=0;}//如果是0 for(i=0;i <= lresult/2;i++){ //返回正序的结果 temp=result[i]; result[i]=result[lresult-i]; result[lresult-i]=temp; } return lresult+1;}#undef _BIG_INT_MULT_H
/***** big_int_mult.cpp *****/#include"big_int_mult.h"int main(){ int len,i; int result[20]= {0}; char str1[10]="12"; char str2[10]="12"; cout<<"multiple(str1,str2,result)\n"<<str1<<" "<<str2<<" "; len=multiple(str1,str2,result); cout<<len<<endl; for (i=0; i<20; i++) cout<<result[i];}
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- windows环境中Python中调用matlab
- php中的数组重新整理键
- 第十三章 GUI和文件系统
- 一個返回它所有上級科目名稱的SQL函數
- Android布局管理
- 大数相乘
- 第十四章 微软Windows+Mobile
- 第十五章 嵌入式Linux
- archlinux virtualbox net bridge net error
- 使用Jmeter对软件进行压力测试
- 第十六章 嵌入式开发调试
- 百试不爽的seo关键字文章的写法
- 程序员面试题精选-- 字符串的组合
- jsf xhtml form中 页面中使用 html标签