1339 A Simple Task

翻译后:

问题描述
给定一个正整数 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。
 
输出
输出应该正好包含 d 行,每个数据集一行。

第 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);
        }
    }
}

你可能感兴趣的:(acm练习,java)