挺有意思的一道数学题,最开始从4x+3和8x+7和1,000,000,007入手观察了半天,最后发现和1,000,000,007没有半点关系,只需要针对4x+3和8x+7的两条路径选择合并成同一条即可
对于4x+3和8x+7,都是从2x+1调用自身2遍、3遍来的,所以将问题转换成x0变成2x0+1之后是否满足条件即可
注意每次要取模更新x0,否则溢出是早晚的事情
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int x = in.nextInt();
in.close();
int count = 0;
int mod;
while(x!=0 && count <= 300000){
count++;
x = ((x << 1) + 1) % 1000000007;
}
if((count+2)/3 <= 100000)
System.out.println((count+2)/3);
else
System.out.println(-1);
}
}