翻译后:
问题描述
给定一个正整数 n 和奇数 o 和非负整数 p 使得 n = o2^p。
示例
对于 n = 24,o = 3 和 p = 3。
任务
编写一个程序,对于每个数据集:
读取一个正整数 n,
计算奇整数 o 和非负整数 p,使得 n = o2^p,
写入结果。
示例
对于 n = 24,o = 3 和 p = 3。
任务
编写一个程序,对于每个数据集:
读取一个正整数 n,
计算奇整数 o 和非负整数 p,使得 n = o2^p,
写入结果。
输入
输入的第一行正好包含一个正整数 d,它等于数据集的数量,1 <= d <= 10。数据集如下。
每个数据集仅包含一行,其中恰好包含一个整数 n,1 <= n <= 10^6。
每个数据集仅包含一行,其中恰好包含一个整数 n,1 <= n <= 10^6。
输出
输出应该正好包含 d 行,每个数据集一行。
第 i 行,1 <= i <= d,对应于第 i 个输入,应包含两个整数 o 和 p,由一个空格分隔,使得 n = o2^p。
第 i 行,1 <= i <= d,对应于第 i 个输入,应包含两个整数 o 和 p,由一个空格分隔,使得 n = o2^p。
样本输入
1
24
样本输出
3
3
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
sc.nextLine();
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
for (int i = 0; i < n; i++) {
int x = 0, y = 1, l = -1;
while (x % 2 != 1) {
x = arr[i] / y;
y *= 2;
l++;
}
System.out.println(x + " " + l);
}
}
}