HDU 1339 ( A Simple Task )

//效率没别人高,但是值得骄傲的是我把刚刚学的二分法和位运算同时运用了
Problem : 1339 ( A Simple Task )     Judge Status : Accepted
RunId : 5702672    Language : C    Author : ssun
Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta

#include<stdio.h>

int main()
{
    int t,n,i,j,sta,end,mid;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(j=0; j<=20; j++)
        {    
            sta = mid = n; end = 1;
            while(sta > end)
            {                
                if(n<mid*(1<<j))
                    sta = mid-1;
                else 
                    end = mid+1;
                if(n==mid*(1<<j) && mid %2 == 1)
                    printf("%d %d\n",mid,j);
                mid = (sta + end) / 2;
            }
            
            
        }
    }
    return 0;
}



你可能感兴趣的:(HDU 1339 ( A Simple Task ))