列表

详情


NC223199. C随机字符串生成器

描述

小 W 要生成一个小写字符组成的字符串,现有两个随机字符串生成器,如下:


1. 字符串的每一个位置都是从 a 到 z 均匀随机生成的。
2. 初始时每一种字符有权值 。然后按顺序决定每一位,决定的方案是:每一种字符以 的概率被选中,设选中的为 x,然后令 。重复 len 次。

现在给你 n 个长度恰好为 1000 的字符串,每一个都是两个随机生成器中的一个生成的,并且保证每一个字符串从哪个生成器中生成是均匀独立随机的,请你帮小 W 分辨出每一个字符串是由哪个生成器中生成的。


输入描述

第一行一个整数 n(n=2000),然后 n 行,每行一个字符串,保证长度为 1000,表示你要判断的字符串。

输出描述

n 行,每行一个字符串 FIRST 或 SECOND,表示是从哪个生成器中生成出来的

示例1

输入:

8
gpsooxsbzinyaifcqktxogbhhfcama
srtggipzveyxosmxwrhuwirfnponmr
mfvykbxcezejxuynjezavaxzcunocs
ltrmsbldgoovvfuhiyvlkigsiaozzy
evvlpwdukbmoozyqfzjnlvgpxuqceu
tkpadbbqrsnycbipvnrxhefvqidwlg
aitksqtchllvzeqblgjpaemyjoihzv
bnwfvnalpdteyobcqusoahzcjvpdiy

输出:

SECOND
FIRST
FIRST
FIRST
FIRST
SECOND
SECOND
SECOND

说明:

注意样例输入并不符合题意,只是为了让你理解输入输出格式,它也不会出现在数据中。

原站题解

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

C++ 解法, 执行用时: 9ms, 内存消耗: 312K, 提交时间: 2021-10-16 20:13:21

#include<bits/stdc++.h>
using namespace std;
const int N=1010;
char s[N];
int t[26];
int main()
{
	int T;scanf("%d",&T);
	while(T--)
	{
		memset(t,0,sizeof t);
		scanf("%s",s);
		int l=strlen(s);
		for(int i=0;i<l;i++)t[s[i]-'a']++;
		sort(t,t+26);
		if(t[25]-t[0]>12)puts("FIRST");
		else puts("SECOND");
		
	}
}

上一题