zoukankan      html  css  js  c++  java
  • HDU 1996 汉诺塔VI

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1996

    n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于 
    发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱 
    子从下往上的大小仍保持如下关系 : 
    n=m+p+q 
    a1>a2>...>am 
    b1>b2>...>bp 
    c1>c2>...>cq 
    计算所有会产生的系列总数. 

    Input包含多组数据,首先输入T,表示有T组数据.每个数据一行,是盘子的数 
    目N<30.Output对于每组数据,输出移动过程中所有会产生的系列总数。Sample Input

    3
    1
    3 
    29

    Sample Output

    3
    27
    68630377364883

    题解:每个盘子都有三种选择,所以是3的n方
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <cstdio>
     5 #include <vector>
     6 #include <cstdlib>
     7 #include <iomanip>
     8 #include <cmath>
     9 #include <ctime>
    10 #include <map>
    11 #include <set>
    12 #include <queue>
    13 using namespace std;
    14 #define lowbit(x) (x&(-x))
    15 #define max(x,y) (x>y?x:y)
    16 #define min(x,y) (x<y?x:y)
    17 #define MAX 100000000000000000
    18 #define MOD 1000000007
    19 #define pi acos(-1.0)
    20 #define ei exp(1)
    21 #define PI 3.141592653589793238462
    22 #define INF 0x3f3f3f3f3f
    23 #define mem(a) (memset(a,0,sizeof(a)))
    24 typedef long long ll;
    25 ll gcd(ll a,ll b){
    26     return b?gcd(b,a%b):a;
    27 }
    28 bool cmp(int x,int y)
    29 {
    30     return x>y;
    31 }
    32 const int N=10005;
    33 const int mod=1e9+7;
    34 int main()
    35 {
    36     int t;
    37     cin>>t;
    38     while(t--){
    39         int n;
    40         ll m;
    41         cin>>n;
    42         m=pow(3,n);
    43         cout<<m<<endl;
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    Linux排序命令sort笔记
    Linux排序命令sort笔记
    Linux文本截取命令cut​笔记
    排序和搜索
    栈和队列
    链表
    顺序表
    Linux编辑器|gedit|vi|vim编辑器
    Linux简介
    简单学习Git
  • 原文地址:https://www.cnblogs.com/wydxry/p/7298023.html
Copyright © 2011-2022 走看看