hdu 5747 Aaronson

    T :  1

 n m:  10  2

题解:20 * 0  +  21* 1  +  22* 2 = 10

输出:3  <--  0+1+2=3

AC 代码:

#include<stdio.h>
#include<algorithm>
using namespace std;
int main(void)
{
    int T,n,m;
    int val=0;
    while(scanf("%d",&T)!=EOF)
    {
        while(T--)
        {
            scanf("%d%d",&n,&m);
            m=min(m,31);
            val=n/(1<<m);
            while(n!=1||n!=2)
            {
                n%=(1<<m);
                m=m-1;
                val+=n/(1<<m);
                if(n==0)break;
            }
            printf("%d\n",val);
        }
    }
    return 0;
}

  

posted @ 2016-07-24 10:22  马丁黄瓜啊  阅读(171)  评论(0编辑  收藏  举报