社区
数据结构与算法
帖子详情
平方数的和差的最小值
mathe
2002-05-11 08:17:04
输入正整数N,
要求输出
在1^2 , 2^2, 3^3,...,N^2每个数前加上正负号后求和的绝对值的即小值。
N<=1000000. :)
如果改成
1^3,2^3,3^3,...,N^3结论又如何?
...全文
330
21
打赏
收藏
平方数的和差的最小值
输入正整数N, 要求输出 在1^2 , 2^2, 3^3,...,N^2每个数前加上正负号后求和的绝对值的即小值。 N<=1000000. :) 如果改成 1^3,2^3,3^3,...,N^3结论又如何?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mathe
2002-05-13
打赏
举报
回复
差不多了,已经走上正道了。
其实我几天前已经将答案放在:
http://members.lycos.co.uk/huidu/club/club.php?bbsid=b4bcc350aa4056b0
kbsoft(景乐) 已经将我证明的关键给贴上来了,不过看来没有人看出其有用性。
看来我用的方法还是复杂了一些。
其实上面的讨论已经给出了S(n+8)<=S(n)
那么如果S(n)<=1,必然有S(n+8)=S(n).
所以只要计算出S(6)到S(13)的值(都是0或1),那么就可以证明
n>=6时S(n)是0或1。
这道题目容易给人的错觉是好像可以用DP来解决,但是实际上用DP无论在空间或时间上都无法接受。而通过数学和计算机结合后的分析,问题就非常简单了。
而对于三次方,我们可以得出S(n+16)<=S(n),那么只要找到连续16个结果都是0或1的就行了。
liem
2002-05-13
打赏
举报
回复
情况已经清楚了
当n>=6时有:n=4k,4k+3结果为0,n=4k+1,4k+2结果为1。
根据上面的讨论,只要对n=4k+2进行证明就可以了。
记:S(m,n)(m<n)为m^2,(m+1)^2,...,n^2的代数和绝对值的最小值,s(n)=S(1,n)。则S(n,n+7)=0。
用归纳法证明s(4k+2)=1.已知k=1,k=2时有s(4k+2)=1(具体计算得出,见上面讨论),由于4k+2个数字中有2k+1个奇数,因此结果不能为零。设对k=1,2,...k0我们都有s(4*k+2)=1,则对k+1(k>=2),我们有:
S(4(k-1)+3,4(k+1)+2)=0
从而有:s(4(k+1)+2)=s(4(k-1)+2)+S(4(k-1)+3,4(k+1)+2)=1+0=1。
born_in70s
2002-05-12
打赏
举报
回复
N=10, 好像算不出1呀。
我用pencil and paper 的方法都不行呀。
55555..., mathe() 好像有点不讲道理呀。:-(...
xixi,just kiding !
mathe
2002-05-12
打赏
举报
回复
To starfish.
呵呵,没有这么简单啦,想仔细一些。
现在求的是最小的绝对值,而不是最大的绝对值。
one_add_one
2002-05-12
打赏
举报
回复
用广度可以非常快的得出结果。
但是对于N<=1000000需要几兆的空间:(
gauss
2002-05-12
打赏
举报
回复
算过一下,发现有这样的规律:
无论是n^2还是n^3还是n^a a为自然数
存在 uint N, st. 当n > N时
if( n == 4k + 1 or n == 4k + 2 ){
min == 1
}else{
min == 0
}
无证明。
kbsoft
2002-05-12
打赏
举报
回复
过计算机枚举,可以知道
1^2,2^2,...,12^2可以算出
0,2,4,6,...,2*13^2.
born_in70s
2002-05-12
打赏
举报
回复
我这完全没有利用计算机的能力 :-),看来需要另一种思路呢?
born_in70s
2002-05-12
打赏
举报
回复
OK. 的确对于4K+2 和4k+3 的情形我是猜测,不知大家有什么好办法?
liem
2002-05-12
打赏
举报
回复
如果是4k+3,我们在前面加上0^2,不就成了4(k+1)形式,结果为零
mathe
2002-05-12
打赏
举报
回复
1=-1^2+2^2+3^2+4^2-5^2-6^2-7^2+8^2-9^2+10^2
1=-1^2+2^2-3^2-4^2+5^2-6^2-7^2+8^2-9^2+10^2
LeeMaRS
2002-05-12
打赏
举报
回复
.......
我写了个搜索的程序,真的能得1的-.-b
看来我的算法是非常有问题.
我再想想..
LeeMaRS
2002-05-12
打赏
举报
回复
n=10 我好像也不能得1...
我得的是3...
LeeMaRS
2002-05-11
打赏
举报
回复
最近学动态规划学多了……一脑子都是动态规划
感觉上应该能用来解这道题.
mathe
2002-05-11
打赏
举报
回复
还是不对,比如n=10,结果就可以取1的。
born_in70s
2002-05-11
打赏
举报
回复
xixi, 我的意思就是对N>7的奇数结论成立呀。
N<7的情况都可以笔算呀。
mathe
2002-05-11
打赏
举报
回复
不对,
N=7,结果就可以取0 49-36-25+16-9+4+1
atlantis13579
2002-05-11
打赏
举报
回复
sorry,上面好现不行,我再想一下
atlantis13579
2002-05-11
打赏
举报
回复
我想应该是从N开始,N^2为正,把它减去(N-1)^2,....,N2^2,直到它变成负,然后加(N2-1)^2,.....,N3^2,直到它变成正,......一直下去直到1,按这个顺序加上正负号.
smile_yuzhe
2002-05-11
打赏
举报
回复
拜托能不能把问题说的明白点在1^2 , 2^2, 3^2,...,N^2每个数前加上正负号后求和,这不就是0吗?
还是1^2+2^2-3^2。。。
加载更多回复(1)
python一个整
数
,它加上100后是一个完全
平方
数
,再加上168又是一个完全
平方
数
,请问该
数
是多少?
一个整
数
i,它加上100后是一个完全
平方
数
,再加上168又是一个完全
平方
数
,请问该
数
是多少?(假设该
数
位于-10000到10000之间) 2.分析 直接使用python中的函
数
sqrt()和int()再利用for循环即可完成,但是要注意,根号...
c语言:找出4
数
中最大值
最小值
n1 n2 n3 n4是4个需要判断最大
最小值
的
数
#include <stdio.h> int main() { int n1,n2,n3,n4,max1,max2,min1,min2,max,min; n1=38; n2=43; n3=10; n4=90; if(n1>=n2) {max1=n1;min1=n2;} else {min1=n1;...
C语言实现查找一组
数
中的最大和
最小值
查找一组
数
中的最大、
最小值
/** * 查找一组
数
中的最大
数
* @param nums
数
组指针 * @param step sizeof(type) * @param n 该组
数
中有几个
数
* @return 未找到返回-1,找到返回该
数
的索引 */ int findMax...
给定正整
数
n,找到若干个完全
平方
数
(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全
平方
数
的个
数
最少。
给定正整
数
n,找到若干个完全
平方
数
(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全
平方
数
的个
数
最少。 示例 1: 输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4. 示例 2: 输入: n = 13 输出: 2 ...
用matlab求 矩阵每一列的
平方
和
最小值
及其下标
z=[2,3,4;5,12,4] he=sum(z.*z)%矩阵每一列的
平方
和 [x,t]=min(he)%
最小值
及其下标
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章