51nod 2538 二三排列

2538 二三排列

2.0 秒 262,144.0 KB

给你 nn个正整数,请你将其重排,使得后一个数是前一个数的三分之一(整除)或二倍。

你只需判断是否有解,若有解,输出 Possible ,否则输出 Impossible 。

n<=106n<=106,所有数字 ≤1018≤1018 。

收起
输入
第一行一个数字 n 。
第二行 n 个数字。
输出
一行一个字符串。若有解,输出 Possible ,否则输出 Impossible 。
输入样例
3
3 1 2
输出样例
Possible

题解:题意让我们排序,我需要找一个排序规则,我们按照因子3的个数来降序排序,如果因子3个数相同,我们就按原来数来升序排序。

#include
#include
#define LL long long
using namespace std;

struct Node
{
	LL a,b;
}p[1000000];

bool cmp(Node x,Node y)
{
	if(x.b!=y.b)
		return x.b>y.b;
	return x.a>n;
	for(int i=0;i>p[i].a;
	for(int i=0;i

你可能感兴趣的:(51nod)