杭电acm1339
http://acm.hdu.edu.cn/showproblem.php?pid=1339
把2的n次方打表,然后将输入的n依次除以这些数,知道可以整除,输出可以整除的元素的位置的排列,极为p,而n除以这个2^p就是o了
逐个查找
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<stdio.h> 2 int main() 3 { 4 int a[100],i,size,n,d,o; 5 a[0]=1; 6 for(i=1;;i++) 7 { 8 if(a[i-1]>1000000) 9 { 10 size=i-1; 11 break; 12 } 13 a[i]=a[i-1]*2; 14 } 15 scanf("%d",&d); 16 while(d--) 17 { 18 scanf("%d",&n); 19 for(i=size;i>=1;i--) 20 { 21 if(n%a[i]==0) 22 break; 23 } 24 printf("%d %d\n",n/a[i],i); 25 } 26 return 0; 27 }