专门更新最新设计的网站,何为网络营销?,网站中英切换实例,怎样建立一个企业网站数组变换 以最大元素为基准元素#xff0c;判读其他元素能否通过 x 2 成为最大值#xff01; 那么怎么判断呢#xff1a; max % arr[i] 0arr[i] * 2 ^n max int x 2 ^ n max / arr[i] 3.只需判断 这个 x 是不是 2 的 n 次放就可以了#xff01; 判断 是否为 2 的 n 次 …数组变换 以最大元素为基准元素判读其他元素能否通过 x 2 成为最大值 那么怎么判断呢 max % arr[i] 0arr[i] * 2 ^n max int x 2 ^ n max / arr[i] 3.只需判断 这个 x 是不是 2 的 n 次放就可以了 判断 是否为 2 的 n 次 位运算
对于一个 2 的 n 次方的数它在二进制表示下只有一个位是 1其余位都是 0。例如2二进制为 10、4二进制为 100、8二进制为 1000等。 当我们对一个 2 的 n 次方的数 n 进行 n (n - 1) 操作时结果为 0。这是因为 n - 1 的二进制表示就是将 n 的二进制表示中唯一的那个 1 变成 0然后其后的所有 0 都变成 1。例如8二进制 10007二进制 0111它们进行按位与操作 1000 0111 结果就是 0。而如果一个数不是 2 的 n 次方那么它的二进制表示中不止一个 1进行 n (n - 1) 操作就不会得到 0。
public class PowerOfTwoChecker {public static boolean isPowerOfTwo(int n) {if (n 0) {return false;}return (n (n - 1)) 0;}
}import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int n in.nextInt();int[] a new int[n];int max 0 ;for(int i 0; i n; i) {a[i] in.nextInt();max Math.max(max,a[i]);}boolean flag true;for(int i 0 ; i n; i) {if(max % a[i] ! 0) {flag false;break;}int x max / a[i];if((x (x - 1)) ! 0) {flag false;break;}}if(flag) System.out.println(YES);else System.out.println(NO);}
}