欢迎来到天天文库
浏览记录
ID:38171570
大小:29.50 KB
页数:3页
时间:2019-05-22
《大整数相乘问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、大整数相乘算法!分类:C/C++编程ACM及算法2006-05-2401:391836人阅读评论(1)收藏举报#include#include#include#defineMax100 //这个数可以根据需要调整!charres[Max];voidInit_char(char*res){ inti; for(i=0;i2、(i=0;i3、了可以让不同位数的 的大整数相乘,把res数组设很大,并在前面添加'0'. mulNum只是一个乘数而已 *output : 在相乘之后,把乘积输出. *backworth : NobackWorth! **********************************************************/voidLong_Multy(char*res,char*mulNum) { inttemp[Max]; 4、 //用来存放中间结果,用整型数据结构,方便运算!!! inti,j; intlen; Init_int(temp); //将数组元素都初始化为0 len=strlen(mulNum); intt=0; for(i=len-1;i>=0;i--,t++) //mulNum对应的元素 { for(j=Max-1;j>=0;j--) //res对应的元素 { temp[j-t]+=(res[j]-'0')*(mulNum[i]-'0'); //乘的过5、程存储! } } intcarry=0; //整型结果转化为字符型结果. for(i=Max-1;i>=0;i--) { res[i]=(temp[i]+carry)%10+'0'; carry=(temp[i]+carry)/10; } //--------------------输出乘积! printf("相乘的结果为:/n"); for(i=0;i6、res[i]); printf("/n"); return;}voidinput(char*a,char*b) //输入需要一些转换,所以单独写成一个函数!{ intlen,i; scanf("%s%s",a,b); Init_char(res); len=strlen(a); for(i=len-1;i>=0;i--) //往res数组存放乘数a. res[Max+i-len]=a[i];}intmain(){ chara[50],b[50]; input(a,b); Long_Multy(r7、es,b); getch(); return0;}
2、(i=0;i3、了可以让不同位数的 的大整数相乘,把res数组设很大,并在前面添加'0'. mulNum只是一个乘数而已 *output : 在相乘之后,把乘积输出. *backworth : NobackWorth! **********************************************************/voidLong_Multy(char*res,char*mulNum) { inttemp[Max]; 4、 //用来存放中间结果,用整型数据结构,方便运算!!! inti,j; intlen; Init_int(temp); //将数组元素都初始化为0 len=strlen(mulNum); intt=0; for(i=len-1;i>=0;i--,t++) //mulNum对应的元素 { for(j=Max-1;j>=0;j--) //res对应的元素 { temp[j-t]+=(res[j]-'0')*(mulNum[i]-'0'); //乘的过5、程存储! } } intcarry=0; //整型结果转化为字符型结果. for(i=Max-1;i>=0;i--) { res[i]=(temp[i]+carry)%10+'0'; carry=(temp[i]+carry)/10; } //--------------------输出乘积! printf("相乘的结果为:/n"); for(i=0;i6、res[i]); printf("/n"); return;}voidinput(char*a,char*b) //输入需要一些转换,所以单独写成一个函数!{ intlen,i; scanf("%s%s",a,b); Init_char(res); len=strlen(a); for(i=len-1;i>=0;i--) //往res数组存放乘数a. res[Max+i-len]=a[i];}intmain(){ chara[50],b[50]; input(a,b); Long_Multy(r7、es,b); getch(); return0;}
3、了可以让不同位数的 的大整数相乘,把res数组设很大,并在前面添加'0'. mulNum只是一个乘数而已 *output : 在相乘之后,把乘积输出. *backworth : NobackWorth! **********************************************************/voidLong_Multy(char*res,char*mulNum) { inttemp[Max];
4、 //用来存放中间结果,用整型数据结构,方便运算!!! inti,j; intlen; Init_int(temp); //将数组元素都初始化为0 len=strlen(mulNum); intt=0; for(i=len-1;i>=0;i--,t++) //mulNum对应的元素 { for(j=Max-1;j>=0;j--) //res对应的元素 { temp[j-t]+=(res[j]-'0')*(mulNum[i]-'0'); //乘的过
5、程存储! } } intcarry=0; //整型结果转化为字符型结果. for(i=Max-1;i>=0;i--) { res[i]=(temp[i]+carry)%10+'0'; carry=(temp[i]+carry)/10; } //--------------------输出乘积! printf("相乘的结果为:/n"); for(i=0;i6、res[i]); printf("/n"); return;}voidinput(char*a,char*b) //输入需要一些转换,所以单独写成一个函数!{ intlen,i; scanf("%s%s",a,b); Init_char(res); len=strlen(a); for(i=len-1;i>=0;i--) //往res数组存放乘数a. res[Max+i-len]=a[i];}intmain(){ chara[50],b[50]; input(a,b); Long_Multy(r7、es,b); getch(); return0;}
6、res[i]); printf("/n"); return;}voidinput(char*a,char*b) //输入需要一些转换,所以单独写成一个函数!{ intlen,i; scanf("%s%s",a,b); Init_char(res); len=strlen(a); for(i=len-1;i>=0;i--) //往res数组存放乘数a. res[Max+i-len]=a[i];}intmain(){ chara[50],b[50]; input(a,b); Long_Multy(r
7、es,b); getch(); return0;}
此文档下载收益归作者所有