level 10
定义函数f(m)为正整数m,m+1..2m中,二进制表示恰包含3个1的数字个数
(比如f(4)=1 因为7(oct)=111(bin))问存不存在k,使得f(m)=k无解?
2011年07月29日 16点07分
1
level 12
这题不是很显然么
只需要证明两件很显然的事就可以得到结论了
f(m+1)<=f(m)+1对任意m成立
对任意的N,总存在m使得f(m)>N成立
2011年07月29日 18点07分
3
level 10
诶?好像有点问题吧,f(6)=2 f(7)=4这样明显不满足第一个嘛
2011年07月30日 00点07分
5
level 11
m加1,那么f减1,不变,加1或加2.
所以如果f(m)=k不存在,那么必然有m使得f(m-1)=k-1,f(m)=k
于是这时2m-1,2m都是三个比特1,于是2m-1=1(mod 4).
另外由于m和2m比特1数目相同,而且2m+1的比特1数目比2m大1,所以得到f(m+1)<=f(m)
如果f(m+1)<f(m),必然f(m+1)=k,不然,那么2m+2比特1的数目也是3,由此得到
2m-1=1(mod 8),2m=2(mod 8),2m+2=4(mod 8)
另外m+1比特1的数目也是3,而2m
+3
,2m+4比特1的数目都比2m+2大1,所以得到f(m+2)<f(m+1)
即f(m+2)=k
2011年07月30日 07点07分
7