做题时间:2026.8.8 题目难度:普及+/提高- | 题目链接 | 洛谷链接

首先这题的无穷条件是什么呢?不难发现如果有相邻两个都不为 11 的数就是无穷的。

那么这题其实就在于统计 11 总共会出现的次数。

然后就可以去手玩这三个样例了:3111311231121,玩完后结论就差不多得出来了。

就是从后往前遍历,将答案加一并乘上当前的数字(这个数字相当于多倍贡献)。

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10,P=998244353;
int a[N];
signed main()
{
	int n;cin>>n;
	for(int i=1;i<=n;i++)scanf("%1d",&a[i]);
	int ans=0;
	for(int i=n;i>=2;i--)
	{
		if(a[i]!=1&&a[i-1]!=1)
		{
			cout<<-1;
			return 0;
		}
		ans++;ans=ans*a[i]%P;
	}
	cout<<ans;
	return 0;
}