NC217907. SeektheJokerII
描述
长达数日的春日祭终于告一段落,作为巫女的朝野芳乃在打扫完神社本决定好好享受一下久违的宁静。然而守护了神刀数百年的丛雨难耐寂寞,希望芳乃能陪她一起玩扑克消解愁闷。
芳乃并不擅长市井的游戏,所以总是输多赢少。而昨日被芳乃的神乐舞深深吸引,以致一早就前来建实神社希望能再睹芳华的你碰巧听见了此事。尽管不知道为什么美丽的巫女要自言自语地为玩扑克而苦恼,但你毅然决然地毛遂自荐,希望能为芳乃一解眉间愁。
芳乃告诉了你丛雨准备了n张扑克牌作为牌堆,自牌顶向下数第x张牌作为乌龟,即“乌龟”的上方有x-1张牌,“乌龟”的下方有n-x张牌,抽中“乌龟”的将输掉这一轮比赛。每人每次可以同时在牌堆顶和牌堆底或者仅在牌堆顶或牌堆底其抽取任意张牌,至少抽1张牌。但若选择同时在牌堆顶和牌堆底抽牌,则抽牌数量需要相同。芳乃想知道在你的帮助下,她和丛雨都采取积极策略时,她自己是否一定能获胜。作为被丛雨邀请的一方,每轮游戏都是芳乃先抽。
因为看不见丛雨而误认芳乃罹患精神分裂的你在不由感叹红颜薄命的同时,决定尽全力帮助芳乃完成她的委托。
声明:本题中的所有角色在剧情发生时均已超过18岁。
输入描述
第一行包含一个整数T,表示共有T组测试数据。
每组测试数据共一行,包含两个正整数n和x,分别表示牌堆中有n张牌和”乌龟“的位置。
数据保证,T≤1000000 和n,x≤3000000 ,。
输出描述
对于每组测试数据给出一行结果。
如果芳乃必胜,则输出“yo xi no forever!”,
否则输出”ma la se mi no.1!“。
示例1
输入:
8 1 1 10 3 17 6 12 5 4 3 9 6 12 8 17 11
输出:
ma la se mi no.1! yo xi no forever! yo xi no forever! ma la se mi no.1! ma la se mi no.1! ma la se mi no.1! ma la se mi no.1! ma la se mi no.1!
C++(clang++11) 解法, 执行用时: 1997ms, 内存消耗: 17996K, 提交时间: 2021-01-31 15:22:03
#include<bits/stdc++.h> #define ll long long using namespace std; int main() { int T; cin>>T; while(T--){ int n,x; cin>>n>>x; int a=x-1,b=n-x; if(a>b) swap(a,b); int temp = (b-a)*(1.0+sqrt(5.0))/2.0; if(temp!=a) cout<<"yo xi no forever!\n"; else cout<<"ma la se mi no.1!\n"; } return 0; }
Python3(3.9) 解法, 执行用时: 5170ms, 内存消耗: 20384K, 提交时间: 2021-01-30 14:16:23
t = int(input()) for i in range(t): n, x = map(int, input().strip().split()) if int((max(x-1,n-x)-min(x-1,n-x))*(1+5**0.5)/2)==min(x-1,n-x):print('ma la se mi no.1!') else:print('yo xi no forever!')