题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6630
题意:给你一个n,找出有多少个n的排列满足以下条件
1,a[1] = x, a[n] = y;
2,相邻的两个数之差的绝对值不大于2
当x=1, y = n时 可以推出,
当x !=1 ,y!=n 时特判一下就好 了
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
const int mod = 998244353;
ll a[100005];
void init(){
a[0]=a[1]=a[2]=1;
for (int i = 3; i<= 100000;i++){
a[i]=(a[i-1]+a[i-3])%mod;
}
}
int main(){
init();
int T, n, x, y;
scanf("%d",&T);
while(T--){
scanf("%d%d%d", &n, &x, &y);
int w = y - x - 1;
if(y == n) w++;
if(x != 1) w--;
printf("%lld\n",a[w] % mod);
}
return 0;
}