#1170. [蓝桥杯 2025 国 B] 斐波那契字符串

[蓝桥杯 2025 国 B] 斐波那契字符串

题目描述

斐波那契字符串 S 是由 0 和 1 所组成的字符串,其生成规则如下:

S1​=0。 S2​=1。 对于任意正整数 n(n≥3),Sn​=Sn−2​+Sn−1​(“+”表示字符串拼接)。 例如:S3​=01、S4​=101、S5​=01101。

在斐波那契字符串 S 中,定义逆序对为满足以下条件的整数对 (i,j):

1≤i<j≤∣S∣(其中 ∣S∣ 表示 S 的长度)。 S[i]=1(第 i 个字符为 1)并且 S[j]=0(第 j 个字符为 0)。 现在,给定一个正整数 N,请你计算出 Sn 中所有逆序对 (i,j) 的总数。由于结果可能很大,请输出其对 109+7 取余后的值。

输入格式

输入的第一行包含一个整数 T,表示测试用例的数量。

接下来的 T 行,每行包含一个整数 N,表示要计算的斐波那契字符串的序号。

输出格式

对于每个测试用例,输出一行,包含一个整数,表示 SN​ 中所有逆序对的总数对 109+7 取余后的结果。

样例

2
3
5
0
2

说明/提示

【样例说明】

对于 N=3,S3​=01,逆序对总数为 0。

对于 N=5,S5​=01101,逆序对为 (2,4)、(3,4),总数为 2。

【评测用例规模与约定】

对于 20% 的评测用例,1T201≤T≤203N353≤N≤35

对于 100% 的评测用例,1T1051≤T≤10^53N1053≤N≤10^5