描述
有一天dp小王子偷偷摸摸找到松哥问他:已知n=o*2^p,已知n你能求出o和p嘛?松哥笑了笑告诉他,明天再告诉你。其实松哥并不知道答案,所以他想让你告诉他答案,然后他在把答案告诉dp小王子,松哥发现有可以有很多组o和p,所以决定只告诉他p最大的一组,O(∩_∩)O哈哈~
输入
多组测试数据.
每组测试数据有一个整数n.
n在int范围内.
输出
对于每组测试数据,输出满足条件的o和p,p尽可能大
输入样例 1
24
输出样例 1
3 3
题目要求找出n=o*2^p;中p最大的哪一个,既然是乘2^p那么我们只需要找出2的个数即可,我们可以设一个循环,当n不能被2整除就退出,否则n一直除以2知道不能除,除一次计数一次。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int cont=0;
while(1)
{
if(n%2!=0)
break;
else
{
n/=2;
cont++;
}
}
cout<<n<<" "<<cont<<endl;
}
return 0;
}