列表

详情


NC18993. 硬币游戏

描述

 有一天clccle在机房里和sarlendy玩游戏,游戏的规则是这样的,在clccle和sarlendy的面前有两行长度为2n的硬币序列,共4n枚硬币,从clccle开始取,每次只能取两个人之前都没取过的位置的硬币,如果所取硬币朝上(U)的话记为1,所取硬币朝下(D)的话记为0,这样n次后两个人就得到了长度为n的数字串,谁的数字大谁就赢了,当然也存在平局的情况,当然这两个人都非常的睿智,现在clccle想知道,Ta有没有必胜策略?如果有的话就输出“clccle trl!”,没有的话输出“sarlendy tql!”,特别的,平局输出“orz sarlendy!”。

输入描述

第一行,一个数字n(N<=1000000)
第二,三行,每行各一个长度为2n的字符串

输出描述

一行 输出   clccle trl!或sarlendy tql!或orz sarlendy!

示例1

输入:

3
UDUDUU
DUDUUD

输出:

clccle trl!

说明:

clccle先取5,sarlendy取4,clccle取6,sarlendy取2,clccle取1,sarlendy取3
此时clccle得到的数字为111,sarlendy得到的数字为110
因为111>110 所以说输出clccle trl!

原站题解

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

Pascal(fpc 3.0.2) 解法, 执行用时: 46ms, 内存消耗: 7624K, 提交时间: 2018-09-18 16:37:33

var
 n,i,t1,t2:longint;
 s1,s2:ansistring;
begin
 readln(n);
 readln(s1);
 readln(s2);
 for i:=1 to 2*n do
  begin
   if s1[i]='U' then inc(t1);
   if s2[i]='U' then inc(t2);
  end;
 if t1>t2 then writeln('clccle trl!');
 if t1<t2 then writeln('sarlendy tql!');
 if t1=t2 then writeln('orz sarlendy!');
end.

C++ 解法, 执行用时: 80ms, 内存消耗: 8092K, 提交时间: 2022-03-27 16:18:39

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,i,x=0,y=0;
	string a,b;
	cin>>n;
	cin>>a>>b;
	for(i=0;i<2*n;i++)
	if(a[i]=='D')
	x++;
	for(i=0;i<2*n;i++)
	if(b[i]=='D')
	y++;
	if(x<y)
	cout<<"clccle trl!";
	else if(x>y)
	cout<<"sarlendy tql!";
	else cout<<"orz sarlendy!";
	return 0;
}

Python3 解法, 执行用时: 436ms, 内存消耗: 10412K, 提交时间: 2023-05-25 00:35:19

from collections import Counter

n = int(input())

s1, s2 = input(), input()

cnt = Counter(c1 + c2 for c1, c2 in zip(s1, s2))

cnt['UD'] += cnt['UU'] % 2

if cnt['UD'] > cnt['DU']:
    print('clccle trl!')
elif cnt['UD'] == cnt['DU']:
    print('orz sarlendy!')
else:
    print('sarlendy tql!')

上一题