/* 对于数学相关的题,一直比较差,硬伤! */
列出所有情况终于找到规律:
1:1 2 1
1 2->2 1->1 2
2:1 2 4 3 1
1 2 3 4 ->3 1 4 2 -> 4 3 2 1 -> 2 4 1 3 -> 1 2 3 4
3:1 2 4 1
1 2 3 4 5 6-> 4 1 5 2 6 3 -> 2 4 6 1 3 5 -> 1 2 3 4 5 6
4:1 2 4 8 7 5 1
1 2 3 4 5 6 7 8->5 1 6 2 7 3 8 4-> 7 5 3 1 8 6 4 2-> 8 7 6 5 4 3 2 1->4 8 3 7 2 6 1 5->2 4 6 8 1 3 5 7->1 2 3 4 5 6 7 8
5:1 2 4 8 5 10 9 7 3 6 1
6:1 2 4 8 3 6 12 11 9 5 10 7 1
...........................................................
这里我跟踪了1的轨迹,不难看出1的轨迹的规律
1.最终肯定会回到起点
2.并且可以猜测 存在2的倍数的关系
代码实现如下:
import java.io.*;
import java.util.*;
import java.math.*;
public class Main
{
static int s;
public static void fac(int n)
{
s=0;
int nt=1;
while(true)
{
s++;
if(nt<=n) nt=nt*2;
else nt=(nt-n)*2-1;
if(nt==1) break;
}
}
public static void main(String[] args)
{
//System.out.println("Hello World!");
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
int m=cin.nextInt();
fac(m);
System.out.println(s);
}
}
}