放在二维坐标轴上,蚂蚁的轨迹实际上是一根斜率为1 ,截距为任意整数的射线,题目的要求可以理解为,我们需要构建一个函数,使其与蚂蚁的函数在某个整数位上相交。由于蚂蚁初始点任意,所以无论怎么选取初始点,都会有两种情况:初始蚂蚁在左面,和初始蚂蚁在右面。因此需要构筑一个区间,区间上沿斜率大于一,区间下沿斜率小于一,这样,不管蚂蚁在左还是在右,都可以相交。此外,函数构造要保证不会正好错过交点。
设蚂蚁初始点为A,步数为X,则蚂蚁函数为Y=A+X;
构建一个函数,上沿为:当X为奇数,Y=(3X+1)/2,斜率大于1;
下沿为:当X为偶数,Y=X/2,斜率小于1。
当在奇数点相交时,A+X=(3X+1)/2
A=(X+1)/2,可为任意正整数
当在偶数点相交时,A+X=X/2
A=-X/2,可为任意非正整数
【 在 stub 的大作中提到: 】
: 有一个无限长的整数刻度的坐标轴,有一只蚂蚁在某一个整数刻度上,但是具体位置未知,现在蚂蚁每秒钟都会向正方向前进一格。你有一把手枪,每秒钟你能向坐标轴的某个刻度开一枪,之后只能知道打中还是没打中,请你设计一种开枪的策略,保证最终一定能打中这只蚂蚁。
--
FROM 117.65.189.*