HDU 1339 A Simple Task

来源:互联网 发布:在淘宝上怎么搜索发票 编辑:程序博客网 时间:2024/06/16 23:12

A Simple Task

Problem Description

Given a positive integer n and the odd integer o and the nonnegative integer p such that n = o2^p.ExampleFor n = 24, o = 3 and p = 3.TaskWrite a program which for each data set:reads a positive integer n,computes the odd integer o and the nonnegative integer p such that n = o2^p,writes the result. 


Input

The first line of the input contains exactly one positive integer d equal to the number of data sets, 1 <= d <= 10. The data sets follow.Each data set consists of exactly one line containing exactly one integer n, 1 <= n <= 10^6. 


Output

The output should consists of exactly d lines, one line for each data set.Line i, 1 <= i <= d, corresponds to the i-th input and should contain two integers o and p separated by a single space such that n = o2^p. 


Sample Input

1

24 


Sample Output

3 3

题意:输入一个数n,然后找到o和p满足式子n = o2^p。运算量不大,直接穷举。

#include<cstdio>#include<cstring>#include<cmath>using namespace std;int main(){    int k,i,j,n,t;    scanf("%d",&t);    while(t--)    {        scanf("%d",&n);        for(j=0; j<20; j++)        {            k=1<<j;            i=n/k;            if(i%2&&i*k==n)            {                printf("%d %d\n",i,j);                break;            }        }    }    return 0;}


2 0