网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月17日漏签0天
c++吧 关注:619,788贴子:2,111,455
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 10回复贴,共1页
<<返回c++吧
>0< 加载中...

老哥们我又来了,这次是大整数乘法问题

  • 只看楼主
  • 收藏

  • 回复
  • sanzyf
  • ?:
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
要求用分治法实现大整数乘法。


  • sanzyf
  • ?:
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我代码已经写好了,两位数相乘计算结果正确,可是四位就不正确了,老哥们帮忙看看呗。


2025-06-17 04:20:23
广告
  • sanzyf
  • ?:
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个是类
class Big
{
private:
string num1;
string num2;
public:
Big(string num1,string num2);
int string_to_num(string k);//string转化成int
string num_to_string(int intValue);//int转化成string
string leftChange(string numl);//取左边一半
string rightChange(string numr);//取右边一半
string add(string str1, string str2);//大数加法
string minus(string str1, string str2);//大数减法
string Mult(string num1, string num2, int n);//大数乘法
string addZero(string str, int n);//补0操作
};


  • sanzyf
  • ?:
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
string Big::Mult(string num11, string num22,int n)
{
string A, B, C, D;
string AC, x, BD;
string result;
if (n == 1)
result = num_to_string(string_to_num(num11)*string_to_num(num22));//这个不用管
else
{
A = leftChange(num11);
B = rightChange(num11);
C = leftChange(num22);
D = rightChange(num22);
AC = Mult(A, C, n / 2);
BD = Mult(B, D, n / 2);
x = Mult(minus(A, B), minus(D, C), n / 2);
result = add(add(addZero(AC, n), addZero(add(add(x, AC), BD), n / 2)), BD);
}
return result;
}
大致就是9999*9999,把num1分成99和99,让A=99,B=99,同理得C=D=99。然后result=AC*10的n次+((A-B)(D-C)+AC+BD)*10的n/2次+BD。


  • sanzyf
  • ?:
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
取左一半、取右一半、大数加减法都是对的。应该错在了乘法的递归上,但是我看不出来啊,大佬们帮帮忙。


  • sanzyf
  • ?:
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶


  • sanzyf
  • ?:
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
别沉啊。。


  • zY-Kfhh
  • =
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大整数乘法一般都用fft吧


2025-06-17 04:14:23
广告
  • sanzyf
  • ?:
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 10回复贴,共1页
<<返回c++吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示