题目链接:点击打开题目
是0的话说明它和下一个元素不同,如果是大于1的数,下面的数肯定是依次降序排列下来的。
代码如下:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define CLR(a,b) memset(a,b,sizeof(a))
const LL mod = 1e9+7;
LL num[100000+5];
int main()
{
int u;
int n;
num[0] = 0;
cin >> u;
while (u--)
{
cin >> n;
bool flag = true;
for (int i = 1 ; i < n ; i++)
{
cin >> num[i];
if (num[i] > n-i)
flag = false;
else if (num[i-1] != 0 && num[i] != num[i-1] - 1)
flag = false;
}
if (flag)
{
LL ans = 26;
for (int i = 1 ; i < n ; i++)
{
if (!num[i])
ans = ans * 25 % mod;
}
cout << ans << endl;
}
else
puts("0");
}
return 0;
}