题目大意:
给一个整数n,计算o和p使得 n = o2^p
解题思路:
n一直除以2,知道奇数为止
代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int d,m,n,o,p,k;
scanf("%d",&d);
for(m=0;m<d;m++)
{
scanf("%d",&n);
k=1;
p=0;
while(n%k!=0||(n%k==0&&(n/k)%2==0))
{
p++;
k*=2;
}
o=n/k;
printf("%d %d\n",o,p);
}
}
本文介绍了一种计算任意整数n分解为o*2^p形式的方法,通过不断除以2直到得到奇数部分o,从而找到对应的指数p。
6336

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



