Gym - 101243B Hanoi tower【找规律】

    xiaoxiao2021-03-25  117

    题目链接:https://vjudge.net/problem/Gym-101243B 题意:也就是汉诺塔,给你n个盘子,和3根柱子,问你移动到第几步的时候是三个柱子上的盘子数量都相等的时候 解析:按照题目给你的那个程序把数据算出来,然后找规律即可(高精度) 按照题意翻译的程序:

    #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <iostream> #include <vector> #include <queue> #include <set> using namespace std; typedef long long ll; const int maxn=1e5+100; int t[maxn]; int k; void hanoi(char a,char b,char c,int n) { if(n<1) return ; hanoi(a,c,b,n-1); printf("------------->%d: %d %d %d\n",k++,--t[a-'a'],++t[b-'a'],t[c-'a']); hanoi(c,b,a,n-1); } int main() { int n; scanf("%d",&n); k = 1; t[0] = n; hanoi('a','b','c',n); return 0; }

    AC代码

    a = [0]*105; a[1] = 2 a[2] = 9 deta = 97 for i in range(3,103): if i%2==1: a[i] = a[i-1]*4+2 else: a[i] = a[i-1]+deta deta = 15*deta + deta-15 #print(a) #n = int(int(input())/3) In = open("input.txt","r") Out = open("output.txt","w") n = int(int(In.read())/3) Out.write(str(a[n])) #print(a[n])
    转载请注明原文地址: https://ju.6miu.com/read-20264.html

    最新回复(0)