神奇字符串的定义为: 只含有1和2, 且将其按照连续的1和2拆开后,对应的每部分数字数量恰好和原字符串相同 例如: 1 22 11 2 1 22 1 22 11 2 11 22 ...... 每部分对应的1和2个数为 1 2 2 1 1 2 1 2 2 1 2 2 ...... 恰好等于原串 现给定N,求神奇串的前N位中有多少个1 . 输入格式: 第一行输入一个T,代表数据组数 接下来的T行,输入N 1 <= N <= 100000 输出格式: 对每一组输入,在一行中输出前N位中1的个数。
时间: 2024-03-29 17:37:43 浏览: 70
db2字符串类型的常用函数
好的,我明白了你的问题。这是一个简单的数学问题。我们可以使用类似于斐波那契数列的方法来解决它。
我们定义一个数组 `dp`,其中 `dp[i]` 表示前 `i` 个数字中 1 的个数。
首先,我们将前两个数字设为 1,即 `dp[1] = dp[2] = 1`。
接下来,我们通过以下规则来计算 `dp` 数组的值:
- 如果第 `i` 个数字是 1,那么 `dp[i] = dp[i-1] + 1`。
- 如果第 `i` 个数字是 2,那么 `dp[i] = dp[i-1] + dp[i-2]`。
最终,我们得到的 `dp[N]` 就是前 `N` 个数字中 1 的个数。
以下是代码实现:
阅读全文