题解 | #循环汉诺塔#
循环汉诺塔
https://www.nowcoder.com/practice/cdf0808f841748faba058c8ef538c731
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int n = in.nextInt(); long ptoB = 0; long ptoC = 0; long toB = 1; long toC = 2; for (int i = 1; i < n; i++) { ptoB = toB; ptoC = toC; //该计算公式可以通过分析得出,受教于博客 //https://blog.csdn.net/weixin_44473131/article/details/123994601? ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%BE%AA%E7%8E%AF%E6%B1%89%E8%AF%BA%E5%A1%94%E9%97%AE%E9%A2%98&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-123994601.142^v96^pc_search_result_base2&spm=1018.2226.3001.4187 toB = (2 * ptoC + 1) % 1000000007; toC = (2 * ptoC + 2 + ptoB) % 1000000007; } System.out.println(toB + " " + toC); } }