https://www.nowcoder.com/acm/contest/67/D

思路:

先手动模拟一下过程,以下是模拟过程,按顺序表示第几步需要移动的盘标号

1 1 2 1 1 2

1 1 3 1 1 2

1 1 2 1 1 3

1 1 2 1 1 2

1 1 4 1 1 2

。。。。。。

我们发现每出现两次1就会出现一次2,每两次2就会出现一次3,每两次3就会出现一次4,每两次4就会出现一次5。。。。。。

然后我们发现如果把所有大于1的标号看成1,那么k步1出现的次数是 k/1

      如果把所有大于2的标号看成2,那么k步2出现的次数是 k/3  

      如果把所有大于3的标号看成3,那么k步3出现的次数是 k/3^2

      如果把所有大于4的标号看成4,那么k步4出现的次数是 k/3^3  

      。。。。。。

那么为什么可以这样呢

因为这样我们就可以把移动的循环看成6步,刚才说过每出现两次i,出现一下i+1,所以每移动两步停一下(如图③和⑥过程),所以k/3^(i-1)可以表示通过这个循环的步数,取余6就知道i走到哪里了

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
vector<int>a[];
int main(){
ios::sync_with_stdio(false);
cin.tie();
ll n,k;
while(cin>>n>>k){
for(int i=;i<;i++)a[i].clear();
ll base=;
for(int i=;i<=n;i++){
int t=(k/base)%;
if(t>)t=-t;
a[t].pb(i);
base*=;
}
for(int i=;i<;i++){
if(a[i].size()) for(int j=a[i].size()-;j>=;j--)cout<<a[i][j]<<(j==?'\n':' ');
else cout<<<<endl;
}
}
return ;
}

最新文章

  1. NopCommerce 在Category 显示 Store List列表
  2. 关于docker容器是怎样建立新的namespace的。
  3. 视频演示eworkflow集成定制aspx页面的过程
  4. [c++] Pieces of knowledge
  5. JQuery + JSON作为前后台数据交换格式实践
  6. ECSHOP seo修改建议
  7. linux下配置squid http proxy过程
  8. 使用Markdown在博客里插入代码
  9. mysql允许远程IP访问
  10. 简易封装手机浏览器touch事件
  11. user-modify属性,让html标签可以编辑
  12. python3的正则表达式(regex)
  13. 各大网站vip视频破解
  14. ubuntu查看IO
  15. VS2013添加重构重命名功能
  16. java使用Rome解析Rss的实例(转)
  17. log4j 知识点
  18. 第六章 Hyper-V 2012 R2 的检查点
  19. 洛谷 P2835 刻录光盘
  20. org.apache.commons.lang.StringUtils的常用方法

热门文章

  1. SV中的覆盖率
  2. Linux root用户下强制静音的问题
  3. git参考文档
  4. RocketMQ事务消费和顺序消费详解
  5. ping和telnet的区别
  6. Linux基础命令---znew
  7. MySQL数据库----IDE工具介绍及数据备份
  8. 20145127 《Java程序设计》第四次实验报告
  9. 20145318《网络对抗》Web应用
  10. UVa 11082 Matrix Decompressing - 网络流