天天看點

Dropping Balls UVA - 679(找規律)

把每個點看成兩部分左子樹與右子樹

#include <iostream>

using namespace std;

int main()
{
    int n;
    while(scanf("%d",&n)&&n!=-1)
    {
        int a,b;
        for(int i=0;i<n;i++)
        {
            scanf("%d%d",&a,&b);
            int k=1;
            for(int j=0;j<a-1;j++)
            {
                if(b%2){k*=2,b=(b+1)/2;}
                else {k=k*2+1,b/=2;}
            }
            cout<<k<<endl;
        }
    }
    return 0;
}
           

繼續閱讀