TLE大佬们有什么好办法吗
#include<stdio.h>#define x 998244353
long long f2(int n);
long long f3(int n);
long long f1(int n){
if(n==1) return 1;
else if(n==2) return 2;
return f3(n-1)%x+f2(n-1)/2%x;
}
long long f2(int n){
if(n==1) return 1;
else if(n==2) return 2;
return f1(n-1)%x+f3(n-1)%x;
}
long long f3(int n){
if(n==1) return 1;
else if(n==2) return 2;
return f1(n-1)%x+f2(n-1)/2%x;
}
int main(){
int n;
scanf("%d",&n);
long long ans=(f1(n)+f2(n)+f3(n))%x;
printf("%lld",ans);
return 0;
}
Geopelia 正在打音游。
现在按键序列可以看做一个长度为n的序列[a1,a2,⋯,an]。
特别地,这个序列满足每一项ai都是1,2,3中的一个,且相邻的两项 ai≠ai+1
Geopelia 认为一个序列是不卡手的,当且仅当序列中没有出现连续的子串 [1,2,3]或 [3,2,1]
问一共有多少个不同的不卡手的序列,且长度为 n?
由于答案很大,你应当输出答案除以 998244353的余数。
输入
一个整数 n
保证 3≤n≤2×105
输出
答案对 998244353取模的余数。
输入样例 1
3
输出样例 1
10
输入样例 2
4
输出样例 2
16
输入样例 3
100
输出样例 3
485170147