原帖由 nyfor 于 2011-4-29 22:10 发表 s := (11 * s + 4 - trunc((7 * s + 1) / 19)) mod 29; x := 25 - s - (y - 2344 + trunc(y / 4) - s) mod 7; s 值最大的可能取值为28,而我们已知 y>=1900 故而 (y - 2344 + trunc(y / 4) -s ) 这部分可以推知,必定 〉0,因此 mod 7 的结果也必定 >=0 故而,我们可以将 (y -2344 + trunc(c / y) -s )加上7的正整数倍后 mod 7 结果将不变。 由此我们加上 7*334 = 2338 继而变成 (y - 6 + trunc(c / y) - s). 最终就是: s := (11 * s + 4 - trunc((7 * s + 1) / 19)) mod 29; x := 25 - s - (y - 6 + trunc(y / 4) - s) mod 7; 这样又可以节省 3 个字节,减少为 1192 字节 再次重申,这种推理变换应该不属于出题者禁止的中间结果吧 ?
使用道具 举报
原帖由 nyfor 于 11-4-29 22:10 发表 s := (11 * s + 4 - trunc((7 * s + 1) / 19)) mod 29; x := 25 - s - (y - 2344 + trunc(y / 4) - s) mod 7; s 值最大的可能取值为28,而我们已知 y>=1900 故而 (y - 2344 + trunc(y / 4) -s ) 这部分可以推知,必定 〉0,因此 mod 7 的结果也必定 >=0 故而,我们可以将 (y -2344 + trunc(c / y) -s )加上7的正整数倍后 mod 7 结果将不变。 由此我们加上 7*334 = 2338 继而变成 (y - 6 + trunc(c / y) - s). 最终就是: s := (11 * s + 4 - trunc((7 * s + 1) / 19)) mod 29; x := 25 - s - (y - 6 + trunc(y / 4) - s) mod 7; 这样又可以节省 3 个字节,减少为 1192 字节 再次重申,这种推理变换应该不属于出题者禁止的中间结果吧 ?
原帖由 rollingpig 于 2011-5-2 10:48 发表 强。
原帖由 rollingpig 于 2011-5-3 10:43 发表 我的密码是rpg
原帖由 rollingpig 于 2011-5-3 10:47 发表 showLeapEasterDay是最容易出问题的。 Nyfor似乎在这里垮了,如果4/24是复活节而4/25不是复活节,代码不能输出4/25
本版积分规则 发表回复 回帖后跳转到最后一页