统计每个月兔子的总数_牛客题霸_牛客网 (nowcoder.com)
这个问题实际上是著名的“斐波那契数列”(Fibonacci sequence)的一个应用。斐波那契数列是这样一个序列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...,其中每个数字都是前两个数字的和。
在这个兔子问题中,我们可以这样考虑:
所以,第n个月的兔子总数就是斐波那契数列的第n项。
在下面这段代码中,fibonacci
函数计算斐波那契数列的第n项。在 main
函数中,我们读取用户输入的月份n,并调用 fibonacci
函数来计算第n个月的兔子总数。注意,由于兔子从第3个月开始生小兔子,所以实际上我们计算的是斐波那契数列的第n-2项。
#include <stdio.h>
// 函数用于计算斐波那契数列的第n项
int fibonacci(int n) {
if (n <= 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
int a = 0, b = 1, next;
for (int i = 2; i <= n; i++) {
next = a + b;
a = b;
b = next;
}
return b;
}
}
int main() {
int n;
printf("请输入月份n: ");
scanf("%d", &n);
// 由于兔子从第3个月开始生小兔子,所以计算斐波那契数列的第n-2项
int rabbitCount = fibonacci(n - 2);
printf("第%d个月的兔子总数为: %d\n", n, rabbitCount);
return 0;
}
#include <stdio.h>
#include <math.h>
int main() {
int n, m;
double sum, term;
// 循环读取多组输入数据
while (scanf("%d %d", &n, &m) != EOF) {
// 初始化数列的第一项和总和
term = n;
sum = term;
// 计算数列的前m项和
for (int i = 1; i < m; i++) {
term = sqrt(term); // 计算下一项的值
sum += term; // 累加到总和中
}
// 输出结果,保留两位小数
printf("%.2f\n", sum);
}
return 0;
}