A9455.算术排列
普及-
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
给你一个包含 n 个正整数的数组 a ,你可以对其执行以下操作。
每次操作,你可以选择数组中的任意一个元素 ai 并使用 ⌊2ai⌋ 替换它,也就是 ai 除以 2 的整数部分(向下取整)。
试试看,如果你可以执行任意次上述操作,是否能够使数组 a 变为数字 1 到 n 的一个排列--也就是说使数组 a 包含 1 到 n 之间的所有整数,每个数字正好出现一次。
比如如果 a=[1,8,25,42],n=4 ,你可以对其进行以下操作:
- 将 8 替换为 ⌊28⌋=4,然后 a=[1,4,25,2];
- 将 25 替换为 ⌊225⌋=12,然后 a=[1,4,12,2];
- 将 12 替换为 ⌊212⌋=6,然后 a=[1,4,6,2];
- 将 6 替换为 ⌊26⌋=3,然后 a=[1,4,3,2]。
输入格式
输入的第一行为一个正整数 t(1≤t≤104) 表示共有 t 个测试用例 。
对于每个测试用例第一行为一个整数 n(1≤n≤50) 表示数组的大小;第二行有 n 个正整数 ai(1≤ai≤109) 。
输出格式
对于每个测试用例,如果能够执行上述操作使得 a 成为 1 到 n 的一个排列则输出 YES 否则输出 NO 。
你可以输出 YES 和 NO 的任意大小写形式(例如,字符串 yEs、yes、Yes 和 YES 都会被视为正确答案)。
输入输出样例
输入#1
6 4 1 8 25 2 2 1 1 9 9 8 3 4 2 7 1 5 6 3 8 2 1 4 24 7 16 7 5 22 6 22 4 22
输出#1
YES NO YES NO NO YES
说明/提示
第一个测试用例在问题陈述中已做出说明。
第二个测试用例中,不可能得到一个排列。