2019HDU多校第五场 6630 permutation 2 (打表找规律)


以下是我打的表。。。。。

眼瞎了 别笑orz
我们发现 第一行 除了最后一个就是解。。。。。
然后 l == 1 or r == 1 去错开一行 r - l + 1 就是要的解

#include<bits/stdc++.h>
#define N 1000010
using namespace std;
const int mod = 998244353;
int mp[15][15];
const int maxn = 1e5 + 5;
int a[maxn];

int main() {
// int n;
// cin >> n;
// int a[12];
// for(int i = 1; i <= n; i ++) {
// a[i] = i;
// }
//
// for(int x = 1; x <= n; x ++) {
// for(int y = x + 1; y <= n; y ++) {
// int ans = 0;
// do {
// int f = 1;
// if(a[1] == x && a[n] == y) {
// for(int z = 2; z <= n; z ++) {
// if(abs(a[z] - a[z - 1]) > 2)
// {f = 0; break;}
// }
// if(f) ans ++;
// }
// }while(next_permutation(a + 1, a + 1 + n));
// mp[x][y] = mp[y][x] = ans;
// }
// }
// cout << " ";
// for(int i = 1; i <= n; i ++)
// cout << " "<< i << " ";
// cout << endl;
// cout << endl;
// for(int i = 1; i <= n; i ++) {
// cout << i << " ";
// for(int j = 1; j <= n; j ++) {
// cout << mp[i][j] << " ";
// }cout << endl;
// }
	int t;
	cin >> t;
	int n, l, r;

	a[0] = 0;
	a[1] = 1;
	a[2] = 1;
	a[3] = 1;
	for(int i = 4; i < maxn; i ++) {
		a[i] = (a[i - 1] + a[i - 3]) % mod ;
	}
// for(int i = 1; i <= 15; i ++) cout << a[i] << " " ; cout << endl;
	while(t --) {
		cin >> n >> l >> r;
		if(l != 1) l++;
		if(r != n) r--;
			cout << a[r -  l + 1] << endl;
		
	}
	return 0;
}
全部评论

相关推荐

牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务