Meaning of the questions:
t set of inputs, there are three examples of each group after the number n, x, y represent a beginning y to x is the length ending inside n array, beginning and end of the data has been fixed, so you from 1-- find n, other data into an array
(Can not be reused for each data), it satisfies abs (v [i + 1] -v [i])> = 2 (i <= n-1), asked how many cases fulfill this sort
answer:
First violence to hit a set of data
This is when n = 11
i represents x, j y represents
1 i:1 j:2 sum:1 2 i:1 j:3 sum:1 3 i:1 j:4 sum:1 4 i:1 j:5 sum:2 5 i:1 j:6 sum:3 6 i:1 j:7 sum:4 7 i:1 j:8 sum:6 8 i:1 j:9 sum:9 9 i:1 j:10 sum:13 10 i:1 j:11 sum:28 11 12 i:2 j:3 sum:0 13 i:2 j:4 sum:1 14 i:2 j:5 sum:1 15 i:2 j:6 sum:1 16 i:2 j:7 sum:2 17 i:2 j:8 sum:3 18 i:2 j:9 sum:4 19 i:2 j:10 sum:6 20 i:2 j:11 sum:13 21 22 i:3 j:4 sum:0 23 i:3 j:5 sum:1 24 i:3 j:6 sum:1 25 i:3 j:7 sum:1 26 i:3 j:8 sum:2 27 i:3 j:9 sum:3 28 i:3 j:10 sum:4 29 i:3 j:11 sum:9 30 31 i:4 j:5 sum:0 32 i:4 j:6 sum:1 33 i:4 j:7 sum:1 34 i:4 j:8 sum:1 35 i:4 j:9 sum:2 36 i:4 j:10 sum:3 37 i:4 j:11 sum:6 38 39 i:5 j:6 sum:0 40 i:5 j:7 sum:1 41 i:5 j:8 sum:1 42 i:5 j:9 sum:1 43 i:5 j:10 sum:2 44 i:5 j:11 sum:4 45 46 i:6 j:7 sum:0 47 i:6 j:8 sum:1 48 i:6 j:9 sum:1 49 i:6 j:10 sum:1 50 i:6 j:11 sum:3 51 52 i:7 j:8 sum:0 53 i:7 j:9 sum:1 54 i:7 j:10 sum:1 55 i:7 j:11 sum:2 56 57 i:8 j:9 sum:0 58 i:8 j:10 sum:1 59 i:8 j:11 sum:1 60 61 i:9 j:10 sum:0 62 i:9 j:11 sum:1 63 64 i:10 j:11 sum:1
After which is to find the law (it ended up looking for a better table)
For this kind of x == 1
First initial value v [y == 2] = 1, v [y == 3] = 1, v [y == 4] = 1, v [y == 1] = 0
After the rule is v [i] = v [i-1] + v [i-3]
This is x == 1, then x! = 1 when
If y is not the time to answer n
v[y-x]
y == n, it is the
v[y-x+1]
This is the law of (really hard to find T_T)
Code:
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 typedef long long ll; 7 const int maxn=1e5+10; 8 const int mod = 998244353; 9 ll v[maxn]; 10 int main() 11 { 12 v[1]=0; 13 v[4]=v[2]=v[3]=1; 14 for(ll i=5;i<=1e5;++i) 15 { 16 v[i]=(v[i-1]+v[i-3])%mod; 17 } 18 ll t; 19 scanf("%lld",&t); 20 while(t--) 21 { 22 ll n,x,y; 23 scanf("%lld%lld%lld",&n,&x,&y); 24 if(x==1) 25 { 26 if(y==n) 27 printf("%lld\n",v[n+1]); 28 else printf("%lld\n",v[y]); 29 } 30 else 31 { 32 if(y==n) 33 printf("%lld\n",v[y-x+1]); 34 else printf("%lld\n"v [y- x]); 35 } 36 } 37 return 0 ; 38 }