• sgu175pascal


    题目描述

    phi(W)为以下编码算法的结果:

    1. W的长度为1,则phi(W)=W

    2. 设编码单词为W=w1w2…wNK=N/2(向下取整);

    3. phi(W) = phi(wNw(N-1)…w(K+1)) + phi(wKw(K-1)…w1)

    例如,phi(‘Ok’)=’kO’phi(‘abcd’)=’cdab’

    你的任务是找出字母Wq在加密的单词phi(W)中的位置。

     

    输入:

    给出整数Nq (1<=N<=10^9 1<=q<=N)N是单词W的长度。

    输出:

    输出字母Wq在加密的单词phi(W)中的位置。

    样例测试:

    输入:

    9 4

    输出:

    8

     

    program sky;
    var
       n,ans : longint;
    procedure get(l,r: longint );
    var
       mid : longint;
    begin
       if l=r then exit;
       mid:=(r-l+1) shr 1+l-1;
       if ans<=mid then
       begin
          ans:=l+mid-ans;
          inc(ans,r-mid);
          get(r+1-(mid-l+1),r);
       end
       else
       begin
          ans:=mid+1+(r-ans);
          dec(ans,mid-l+1);
          get(l,l-1+(r-mid));
       end;
    end;
    begin
       read(n,ans);
       get(1,n);
       writeln(ans);
    end.

    毫无难度的递归模拟仅写给像我一样的细节爱出问题的盆友。

    长度=r-l+1

    左端点加上长度=(l-1)+(l-r+1)

    右端点减去长度=(r+1)-(l-r+1)

    仅写给自己吧。。

  • 相关阅读:
    Mysql 单表查询-排序-分页-group by初识
    Mysql 单表查询where初识
    Mysql 库表操作初识
    Mysql 常见数据类型及约束
    数据库 初识
    Mysql 游标初识
    Mysql 控制结构初识
    Mysql 存储过程初识
    单链表-Python实现-jupyter->markdown 格式测试
    MySQL 触发器学习-markdown->html 格式测试
  • 原文地址:https://www.cnblogs.com/skysun/p/2396307.html
Copyright © 2020-2023  润新知