传送门

D. Divide by three, multiply by two

•题意

给你一个数 x,有以下两种操作,x 可以任选其中一种操作得到数 y

1.如果x可以被3整除,y=x/3

2.y=x*2

y 再执行上述两种操作的一种得到数 z;

  接着对 z 得到......

  这样依次执行了 n-1 次会得到 n 个数;

  现在给你这 n 个数,让你按照上述规则给这 n 个数排序,使得其满足

  a1=x , a2=y , a3=z , ........

 

•思路

对于任意一个数 p,能通过两类操作得到:

①p=3p /3

②p=x/2 *2

因为GCD(2,3) = 1,所以右边的等式是不可能成立的;

  所以 p只能由①②中的一种情况得到;

  并且这 n 个数各不相同;

  那么,任意选取一个数,依次向前推到第一个数,依次向后推即可得到答案;

•代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
map<ll,int> mp;
int main()
{
int n;
cin>>n;
ll x;
for(int i=;i<n;i++)
{
cin>>x;
mp[x]=;
}
ll cur=x;
while()
{
if(cur%==&&mp.count(cur/))
cur/=;
else if(mp.count(cur*))
cur*=;
else //直到没有前一个 此时为第一个数
break;
}
while() //从前往后推 乘2 或 除3
{
cout<<cur<<' ';
if(mp.count(cur*))
cur*=;
else if(cur%==&&mp.count(cur/))
cur/=;
else
break;
}
}

最新文章

  1. MIP开发常见问题解答
  2. mysql 外键约束备注
  3. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)
  4. 读取70开头的xml,gbk转成utf-8
  5. .net读写config appsetting
  6. [Mysql] mysql临时表corrupt
  7. JVM调优-Java垃圾回收之分代回收
  8. Alice and Bob
  9. Microsoft Visual Studio与Firefly 加载的项目已建议,更新源代码地位问题
  10. Linux系统常用命令总结
  11. 51nod 1682 中位数计数
  12. AngularJS2+调用原有的js脚本(AngularJS脚本跟本地原有脚本之间的关系)
  13. LOJ.6160.[美团CodeM初赛 RoundA]二分图染色(容斥 组合)
  14. 2017蓝桥杯 省赛C题(承压计算)
  15. bzoj1027 状压dp
  16. IDM的Google商店插件
  17. arch----------arch下的一些命令,亲测
  18. python学习笔记6--操作redis
  19. mysql标准写法及其他常见问题
  20. The equation (扩展欧几里得)题解

热门文章

  1. ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理
  2. Markdown教程 &lt;1&gt;
  3. 打包成war包之后如何读取配置文件
  4. node实现文件拷贝1
  5. Java NIO 学习笔记(四)----文件通道和网络通道
  6. 利用jsonconvert来转换json数据格式 (对象转为json)
  7. RQNOJ193 造路行动
  8. 设计模式-抽象工厂模式(AbstractFactory)
  9. 前端笔记之React(四)生命周期&amp;Virtual DOM和Diff算法&amp;日历组件开发
  10. python3.7 AES.MODE_ECB(128位) pkcs5padding 加密算法