- qinkaiwen 的博客
题解:AT_abc313_e uplicate
- @ 2026-8-8 13:41:52
做题时间:2026.8.8 题目难度:普及+/提高- | 题目链接 | 洛谷链接
首先这题的无穷条件是什么呢?不难发现如果有相邻两个都不为 的数就是无穷的。
那么这题其实就在于统计 总共会出现的次数。
然后就可以去手玩这三个样例了:3111、3112、31121,玩完后结论就差不多得出来了。
就是从后往前遍历,将答案加一并乘上当前的数字(这个数字相当于多倍贡献)。
#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;
}