翻译后:
问题描述
给定一个正整数 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);
}
}
}
该程序设计任务要求读取一个正整数n,并找到一个奇数o和非负整数p,使得n等于o乘以2的p次方。给定的Java代码实现通过不断除以2来找到o和p,当x除以2的余数不为0时,x即为o,l作为p的值。对于输入24,输出结果为3 3,表明24可以表示为3乘以2的3次方。
378

被折叠的 条评论
为什么被折叠?



