题解 | #小苯的消消乐乐#

小苯的消消乐乐

https://ac.nowcoder.com/acm/contest/130222/A

#我们不难发现,如果n是奇数,那么n在一轮之后必定会余下一张牌,面值为1,这张牌无法再拿出去,所以无论后面的情况怎么样,剩余的牌都至少是2张;如果n是偶数,那么他必须在每一次除2之后仍然为偶数,我们假设每次除2后的数为m,如果m是奇数的话,那么请跳转到这段话的第二句话,只是将面值1改为面值2、4、8等等,如果m是一直偶数的情况,他就可以一直叠加,比如n=16,最后就会留一张16,其他情况的偶数,比如30,他的演化过程(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,)->(4,4,4,4,4,4,4,2)->(8,8,8,4,2)->(16,8,4,2),我们在第二个阶段就可以break,节省时间。(以上纯属个人观点,如有不对,请多包涵) #include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--){ long long int n; cin>>n; while(n>2){ if(n%2!=0) {cout<<"Ben"<<endl;break;} n/=2; } if(n==2 || n==1) cout<<"Fang"<<endl; } return 0; }

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务