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就不一样了。。醉了,脑子就那么一闪,就过去了。不过也不一定就能想出来。。
    让未来到来 让过去过去
  • 相关阅读:
    DEDECMS里面DEDE函数解析
    dede数据库类使用方法 $dsql
    DEDE数据库语句 DEDESQL命令批量替换 SQL执行语句
    织梦DedeCms网站更换域名后文章图片路径批量修改
    DSP using MATLAB 示例 Example3.12
    DSP using MATLAB 示例 Example3.11
    DSP using MATLAB 示例 Example3.10
    DSP using MATLAB 示例Example3.9
    DSP using MATLAB 示例Example3.8
    DSP using MATLAB 示例Example3.7
  • 原文地址:https://www.cnblogs.com/Tinamei/p/4465736.html
Copyright © 2011-2022 走看看