题目一:
题目描述:
有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。
例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。
一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?
数据范围:输入满足 :1≤n≤31
解题思路:
1.根据分析每个月兔子的数量,实际为斐波那契数列,前2个元素为1,从第3个元素开始,为前两个元素的和。 3月份:1个兔子a
4月份:1个兔子a
5月份:1个兔子a+生的1个兔子b=2个兔子a、b
6月份:1个兔子a+生的1个兔子b+a又生的1个兔子c=3个兔子a、b、c
7月份:1个兔子a+生的1个兔子b+a又生的1个兔子c+a又生的1个兔子d+b生的1个兔子bb=5个兔子
8月份:…8
9月份:…13
10月份:…21
11月份:…34
2.输入的月份对应斐波那契数列的值
代码实现:
#include<stdio.h> int main() { int arr[32]; int month; arr[1] = 1; arr[2] = 1; for (int i = 3; i < 32; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } scanf("%d", &month); printf("%d", arr[month]); return 0; }
结果情况:
符合题目要求,问题得到解决。
题目二:
题目描述:
数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
输入描述:
输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。
输出描述:
对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。
解题思路:
用循环遍历即可轻松实现。
代码实现:
#include <stdio.h> #include <math.h> int main() { double n = 0.00; int m = 0; while (~scanf("%lf %d", &n, &m)) { double sum = 0.00;//这里不能用float,只能用double for (int i = 0; i < m; i++) { //控制m次 sum += n; n = sqrt(n); } printf("%.2lf\n", sum); } return 0; }
结果情况:
符合题目要求,问题得到解决。
总结:
文章到这里就要告一段落了,有更好的想法或问题,欢迎评论区留言。
希望今天的练习能对您有所收获,咱们下期见!