(一)
对于第一个问题,直接搜出字符串中有多少个仅由 \(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;
}
标签:ch,CF1879,int,题解,long,200010
From: https://www.cnblogs.com/Jh763878/p/18098719