NC21815. 筱玛的排列
描述
求有多少个长度为 n 的不同的排列 A,满足对于任意的 i 均有 A[A[i]] + i = n + 1。
输入描述
一行一个整数 n。
输出描述
一行一个整数,表示模 998244353 意义下的答案。
示例1
输入:
4
输出:
2
说明:
3 1 4 2C++14(g++5.4) 解法, 执行用时: 14ms, 内存消耗: 8412K, 提交时间: 2019-01-11 22:12:30
#include<bits/stdc++.h> using namespace std; const int mod=998244353; long long a[1000005]; int main(){ int n; memset(a,0,sizeof(a)); a[1]=1; for(int i=4;i<=1000000;i+=4){ a[i]=(a[i-3]*(i-2))%mod; a[i+1]=a[i]; } scanf("%d",&n); printf("%lld\n",a[n]); }
C++11(clang++ 3.9) 解法, 执行用时: 11ms, 内存消耗: 8192K, 提交时间: 2020-05-09 16:49:46
#include<iostream> using namespace std; #define L long long L a[1000010],n; int main(){ cin>>n; a[0]=a[1]=1; for(L i=4;i<=n;i++) a[i]=a[i-4]*(i-2)%998244353; cout<<a[n]; }