zoukankan      html  css  js  c++  java
  • 汉诺塔IX

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=76447#problem/E

                       汉诺塔IX Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

    Description

    1,2,...,n表示n个盘子.数字大盘子就大.n个盘子放在第1根柱子上.大盘不能放在小盘上.
    在第1根柱子上的盘子是a[1],a[2],...,a[n]. a[1]=n,a[2]=n-1,...,a[n]=1.即a[1]是最下
    面的盘子.把n个盘子移动到第3根柱子.每次只能移动1个盘子,且大盘不能放在小盘上.
    问第m次移动的是那一个盘子.
     

    Input

    每行2个整数n (1 ≤ n ≤ 63) ,m≤ 2^n-1.n=m=0退出
     

    Output

    输出第m次移动的盘子的号数.
     

    Sample Input

    63 1 63 2 0 0
     

    Sample Output

    1 2
    看了,1个小时? 后悔没有坚持,后悔没有把想到的都想到,后悔,存在~
     
    代码超级简单
    #include<stdio.h>

    int main()
    {
        long long n, m, k;  // 2的63次方,超过int类型范围

        while(scanf("%lld%lld", &n, &m), n+m)
        {
            k = 1;
            while(m % 2 != 1)
            {
                k++;
                m /= 2;
            }
            printf("%lld ", k);
        }
        return 0;
    }
     
    之前推了前几个:前5个顺序应该是 1 21 3121 4121 3121 5121 3121 4121 3121 。
    看出来什么了吗没有,昨天其实都想到4放哪个柱子上的问题,由于什么,就把4按放第三个柱子上处理,5就变成了51213121312141213121,当n等于4的时候放第四个柱子上,当n等于5的时候,4放哪个柱子上都是一样,但5就不一样了。。醉了,脑子就那么一闪,就过去了。不过也不一定就能想出来。。
    让未来到来 让过去过去
  • 相关阅读:
    物流与仓库
    测试使用
    禅修的升级
    《引爆点 马尔科姆 格拉德威尔》读书笔记总结----《创业必读书第20本》--创业第三关做好业务:3,如何做好营销和增长第4本
    shell
    Vue中常用的方法记录
    前端工程化3-tapable
    Browser上传文件到华为云/七牛云 详细步骤
    immutable
    shell利用叮叮发送消息
  • 原文地址:https://www.cnblogs.com/Tinamei/p/4465736.html
Copyright © 2011-2022 走看看