博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2^1000的各位数字和
阅读量:6975 次
发布时间:2019-06-27

本文共 563 字,大约阅读时间需要 1 分钟。

这两天在看到这样一个问题。本来这个利用MATLAB的符号计算是相当easy,一句话即可搞定:

 sum(char(sym('2^1000'))-'0') 结果是1366。但如果不用符号计算的话就需要些技巧了。

注意到大数可以用10的n次幂的多项式来表示,因此大数相乘对应的就是多项式乘积,也就是卷积。因此可以得到下面MATLAB代码:

a = num2str(2^50)-'0'; for k = 1:2 a = BigInteM(a,a); end b = a; for k = 1:2 b = BigInteM(b,b); end ab = BigInteM(a,b); sum(ab);

BigInteM的代码如下:

function c = BigInteM(a,b)%a,b为0-9整数数组c = conv(a,b);for k = length(c):-1:2        c(k-1) = c(k-1)+floor(c(k)/10);    c(k) = mod(c(k),10);endtmp = num2str(c(1))-'0';c = [tmp,c(2:end)];

 

 

转载于:https://www.cnblogs.com/rocwoods/archive/2012/02/11/2346503.html

你可能感兴趣的文章
Python中的字符串与字符编码
查看>>
day9-队列queue和生产者消费者模型
查看>>
Python3之logging模块浅析
查看>>
四大组件之内容提供者
查看>>
MySQL运行状态show status详解
查看>>
LeetCode --- Pow(x, n)
查看>>
坐标旋转公式
查看>>
data目录和binlog目录搬迁的方法
查看>>
ACTIVITI 研究代码 之 模版模式
查看>>
第七周网络攻防作业
查看>>
Ajax.BeginForm 使用过程中遇到的问题
查看>>
vue-cli 搭建的项目处理不同环境下请求不同域名的问题
查看>>
Ubuntu Linux系统下apt-get命令详解
查看>>
【spark 深入学习 03】Spark RDD的蛮荒世界
查看>>
【转载】vi/vim使用进阶: 指随意动,移动如飞 (一)
查看>>
SpringCloud学习成长之十三 断路器聚合监控
查看>>
SSH 中从后台传值到前台JSP,传不过去问题
查看>>
espcms自定义表单邮件字段
查看>>
Scala的Tuple
查看>>
js调用后台方法
查看>>