列表

详情


NC228144. 寒冬信使

描述

把曾经白色的部分全部染黑

 个格子排成一排,每个格子是黑色或者白色的。

有双方在格子上进行博弈,根据先后手轮流进行操作,每次操作方可以选择一个白色格子并且翻转这个格子和它前面一个格子的颜色(如果选择的是第一个格子则只翻转这个格子的颜色)。

无法操作者败,求是否先手必胜。

输入描述

第一行给出一个正整数   表示数组组数。

接下来  行给出一个长度为   的  串。

 表示该格子颜色为黑色, 表示该格子颜色为白色。

输出描述

答案输出  行分别表示每组数据的答案。
若先手必胜则输出  ,否则输出  。

示例1

输入:

4
01
1101
0101110110
0110111000

输出:

X
T
X
T

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

pypy3 解法, 执行用时: 163ms, 内存消耗: 27632K, 提交时间: 2021-10-29 19:47:20

n = int(input())
for i in range(n):
    s = input()
    cnt = 0
    for j in range(len(s)):
        if (s[j] == '1'): 
            cnt += j+1
    if (cnt % 2 == 1): print("T")
    else: print("X")
    #print(cnt)

C++ 解法, 执行用时: 23ms, 内存消耗: 696K, 提交时间: 2021-10-29 19:03:34

#include<bits/stdc++.h>
using namespace std;
int T;
string s;
int main()
{
	cin>>T;
	while(T--){
		int ans=0;
		cin>>s;
		for(int i=0;i<s.size();i++)if(s[i]=='1')ans^=(i+1);
		printf("%s\n",ans&1?"T":"X");
	}
}

Python3 解法, 执行用时: 160ms, 内存消耗: 5064K, 提交时间: 2022-02-13 19:07:53

n=int(input())
for _ in range(n):
    ls=((input()))
    cnt=0
    for i in range(0,len(ls),2):
        if ls[i]=='1':
            cnt+=1
    print('X') if cnt%2==0 else print('T')

上一题