zoukankan      html  css  js  c++  java
  • 杭电1995

    这道题是道找规律的题

    其实无论给什么盘号,你都可以将该盘号看成这个盘子以下这一堆盘子中的第一个盘子,比如总共5个盘子,要你算第2个盘子的移动次数,其实你可以看成总共4个盘子,要你算第1个盘子的移动次数

    这个时候,所有问题就都可统一概括为汉诺塔问题中第一个盘子的移动次数,我当时只列了两个盘子和三个盘子的情况就发现,只有两个盘子时,第一个盘子移动次数为2,三个盘子时第1个盘子的移动次数为4,我就猜测第一个盘子移动次数应该为2的总盘子数减一的次方,然后题目刚好给了60这样一个很大的测试数据供我测试,验证后发现这个确实满足这个规律

    #include<stdio.h>
    #include<math.h>

    int main(void){
        long long count = 0;
        int t;
        int n, k;
        scanf("%d", &t);
        while(t--){
            scanf("%d%d", &n, &k);
            count = pow(2, n-k);
            printf("%lld ", count);
        }
        return 0;
    }
  • 相关阅读:
    第四章
    第三章随手笔记
    Android深度探索(卷1)HAL与驱动开发
    第十章心得体会
    第九章心得体会
    第八章心得体会
    第六章心得体会
    第七章心得体会
    第五章心得体会
    第四章心得体会
  • 原文地址:https://www.cnblogs.com/ssNiper/p/11138009.html
Copyright © 2011-2022 走看看