CF1879的题解

(一)

对于第一个问题,直接搜出字符串中有多少个仅由 \(0\)\(1\) 组成的串组成的。

对于第二个问题,每个串只有一个能选,然后选择顺序有所不同,具体看代码。

(二)

AC 代码。

#define int long long
#define md  998244353
using namespace std;
int t,s[200010];
char ch[200010];
signed main(){
	scanf("%lld",&t);
	while(t--){
		scanf("%s",ch+1);
		int len=strlen(ch+1);
		int sum=1,cnt=0,ans=1;
		for(int i=2;i<=len;i++){
			if(ch[i]!=ch[i-1]){
				s[++cnt]=sum;
				sum=1;
			}
			else sum++;
		}
		s[++cnt]=sum;
		printf("%lld ",len-cnt);
		for(int i=1;i<=len-cnt;i++)ans=ans*i%md;
		for(int i=1;i<=cnt;i++)ans=ans*s[i]%md;
		printf("%lld\n",ans);
	}
	return 0;
}
posted @ 2024-03-27 12:29  Jerry_heng  阅读(2)  评论(0编辑  收藏  举报