云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 算法设计与分析(作业一)

算法设计与分析(作业一)

  • 62 次阅读
  • 3 次下载
  • 2026/1/14 2:23:25

int s = x.size(); string a1,a0,b1,b0; if( s > 1) {

a1 = x.substr(0,s/2); a0 = x.substr(s/2,s-1); b1 = y.substr(0,s/2); b0 = y.substr(s/2,s-1); }

string result;

if( s == 2) //长度为2时代表着递归的结束条件 {

int na = string_to_num(a1); int nb = string_to_num(a0); int nc = string_to_num(b1); int nd = string_to_num(b0);

result = num_to_string((na*10+nb) * (nc*10+nd)); }

else{ //长度不为2时利用分治法进行递归运算

/*************************************************** 小提示:

c = a*b = c2*(10^n) + c1*(10^(n/2)) + c0; a = a1a0 = a1*(10^(n/2)) + a0; b = b1b0 = b1*(10^(n/2)) + b0; c2 = a1*b1; c0 = a0*b0;

c1 = (a1 + a0)*(b1 + b0)-(c2 + c0);

****************************************************/ string c2 = IntMult(a1,b1);// (a1 * b1) string c0 = IntMult(a0,b0);// (a0 * b0)

string c1_1 = stringAddstring(a1,a0);// (a1 + a0) string c1_2 = stringAddstring(b1,b0);// (b1 + b0)

string c1_3 = IntMult(c1_1,c1_2);// (a1 + a0)*(b1 + b0) string c1_4 = stringAddstring(c2,c0);// (c2 + c0)

string c1=stringSubtractstring(c1_3,c1_4);// (a1 + a0)*(b1 + b0)-(c2 + c0) string s1=stringFollowZero(c1,s/2);// c1*(10^(n/2)) string s2=stringFollowZero(c2,s);// c2*(10^n)

result = stringAddstring(stringAddstring(s2,s1),c0);// c2*(10^n) + c1*(10^(n/2)) + c0 }

return result; }

int main() {

int f=1;

string A,B,C,D;

string num1,num2; string r;

system(\软件3班 王建君 20122668 分治法实现大整数乘法\ cout<<\请输入第一个大整数(任意长度):\ cin>>num1; int i=0;

//判断第一个输入的数据是否合法,当字符串中包含非数字字符时提示用户重新输入

for(i=0 ;i < num1.size();i++) {

if (num1[i]<'0' || num1[i]>'9') {

cout<<\您输入的数据不合法,请输入有效的整数!\ cin>>num1; i=-1; } }

cout<<\请输入第二个大整数(任意长度):\ cin>>num2;

//判断第二个输入的数据是否合法,当字符串中包含非数字字符时提示用户重新输入

for(i=0 ;i < num2.size();i++) {

if (num2[i]<'0' || num2[i]>'9') {

cout<<\您输入的数据不合法,请输入有效的整数!\ cin>>num2; i=-1; } }

r=IntMult(num1,num2);

//对求得的结果进行修剪,去掉最前面的几个0 while ('0' == r[0]&&r.size()>1) {

r=r.substr(1,r.size()-1); }

cout<<\两数相乘结果为:\

cout<

五、结果分析

计算结果截图如下

即当00112233445566778899与11210748210374098777790374124081568900

99887766554433221100相乘

搜索更多关于: 算法设计与分析(作业一) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

int s = x.size(); string a1,a0,b1,b0; if( s > 1) { a1 = x.substr(0,s/2); a0 = x.substr(s/2,s-1); b1 = y.substr(0,s/2); b0 = y.substr(s/2,s-1); } string result; if( s == 2) //长度为2时代表着递归的结束条件 { int na = string_to_num(a1); int nb = string_to_num(a0); int nc = string_to_nu

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com