请大家讨论一个问题,是个算法问题:求解 12345678900000000000的平方,有兴趣的大家一起讨论啊,集思广益呦

wowshaowow 2008-03-11 07:09:44
请大家讨论一个问题,是个算法问题:求解 12345678900000000000的平方,有兴趣的大家一起讨论啊,集思广益呦,用C\C++都可以
...全文
296 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
InfidelX 2011-01-14
  • 打赏
  • 举报
回复
大数乘法....
chengtg 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hastings 的回复:]
C/C++ code
string Fang(const string& in)
{
if(in==string("12345678900000000000")
return string("152415787501905210000000000000000000000");
else
return string("输入数据不是1……
[/Quote]

这个算法最高效,楼主可以参考下,哈!
wwmfeng 2010-12-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wowshaowow 的回复:]

谢谢大家了,我想了很久,这其实是个大整数运算与储存问题,当需要在个人机桑对超过长整型的多位数是,借助于数组才能精确储存、计算,更规范。
五楼的兄弟太投机取巧了,近期比较忙,没有写代码,这个思路是我在一本《算法设计与分析》上看到的,谢谢大家指教
[/Quote]
提高算法的时间效率与空间效率。实现上略微复杂。
feizigegeyeye 2010-12-11
  • 打赏
  • 举报
回复
申明一个长整数的类型 然后可以的
xunxun 2010-12-11
  • 打赏
  • 举报
回复
gmplib
makeppy 2010-12-10
  • 打赏
  • 举报
回复
哈哈 我面试的时候就是这个题目~~~怀念啊
天亮后说晚安 2010-08-25
  • 打赏
  • 举报
回复
大数乘法
gz_qmc 2010-05-26
  • 打赏
  • 举报
回复
用链表,不管你有多大的数,都能算
那怕你就是一亿位数的乘法
只要你硬盘够大就行
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
没遇到过这种情况.
Inhibitory 2008-04-07
  • 打赏
  • 举报
回复
在32位的机器上,可以用大数乘法来处理,存放到int数组中,数组的每个元素最大值为9999(与1万求模), 1 万 * 1万为1亿,最大的整数为21.4亿, 1万*1万<21.4亿<10万*10万(100亿).
taodm 2008-04-07
  • 打赏
  • 举报
回复
google “大数乘法”,满世界的现成代码。
masterz 2008-04-07
  • 打赏
  • 举报
回复
是不是作业题?
wowshaowow 2008-04-06
  • 打赏
  • 举报
回复
谢谢大家了,我想了很久,这其实是个大整数运算与储存问题,当需要在个人机桑对超过长整型的多位数是,借助于数组才能精确储存、计算,更规范。
五楼的兄弟太投机取巧了,近期比较忙,没有写代码,这个思路是我在一本《算法设计与分析》上看到的,谢谢大家指教
vagrantfish 2008-03-22
  • 打赏
  • 举报
回复
5楼正解
playboytears 2008-03-14
  • 打赏
  • 举报
回复
大数乘法问题吧 可以模拟手工计算乘法的方法 论坛里有这方面的贴纸 可以参考 前几天我也写了一个不过很烂
hastings 2008-03-14
  • 打赏
  • 举报
回复
string Fang(const string& in)
{
if(in==string("12345678900000000000")
return string("152415787501905210000000000000000000000");
else
return string("输入数据不是12345678900000000000,你耍赖!!");
}
mimong_lin 2008-03-14
  • 打赏
  • 举报
回复
将第二个数分成一位位的,有这些位数乘第一个数,然后进行累加.得到的结果得用一个数据来存储,一个元素放一个位.
lxjlan 2008-03-11
  • 打赏
  • 举报
回复
写了个计算123456789*123456789的程序:

unsigned int MultiplySum(unsigned int a,unsigned int b)
{
unsigned int temp = 0;

if( b == 9)
{
while(a <= 9)
{
temp += a*b;
a++;
b--;
}
}
else
if( a == 1)
{
while(b >= 1)
{
temp += a*b;
a++;
b--;
}
};

return temp;
}

void fun()
{
unsigned int temp[30]; // 用来保存结算结果每个元素一位

unsigned int k = 0,i = 9,j = 8;

while(k < 30)
{
temp[k] = 0;

if( i >= 1 )
{
temp[k] = MultiplySum(i,9);
i--;
}
else
if( j >= 1)
{
temp[k] = MultiplySum(1,j);
j--;
}

k++;

}
/*
i = 0;

while(i < 30)
{
cout<<"temp["<<i<<"] = "<<temp[i]<<endl;
i++;
}


i = 0;
*/
while( i< 29)
{
temp[i+1] += temp[i]/10;
temp[i] = temp[i] % 10;
i++;
}



i = 0;

while(i < 30)
{
cout<<"temp["<<i<<"] = "<<temp[i]<<endl;
i++;
}

}
zhufengsheng 2008-03-11
  • 打赏
  • 举报
回复
计算器算吧
独孤过儿 2008-03-11
  • 打赏
  • 举报
回复
只算123456789的平方,后面的零最后添加上去...

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧