Wannafly挑战赛15 C-出队

传送门:https://www.nowcoder.com/acm/contest/112/C
解题思路:判断x奇偶性,奇数出队,偶数不出。由于队伍成环,若上一次队列人数为奇数,则下一次出队时,队伍一号点到的序号为偶数号,因此,我上一次出队少出一人,和剩下的人组成新队列,x+1;若上一次队伍人数为偶数则无影响。
  
不知道为什么不用scanf输入输出就会出错

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;

int main()
{
    ll n,q,x;
    while(~scanf("%lld %lld",&n,&q))
    {
        while(q--)
        {
            scanf("%lld",&x);
            ll sum=n,ans=0;
            while(x%2==0)//若x为奇数,出队
            {
                x/=2;
                if(sum%2==1)//出队sum/2人,若sum为奇数,则余下一人编入下一队列中;
                    x++;
                ans+=sum/2;
                sum-=sum/2;
            }
            ans+=x/2+1;
            printf("%lld\n",ans);
        }
    }
}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页