【CSP初赛】2024初赛练习-阅读程序(1)

主题:斐波那契数列

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll fi(int x) {
	if(x == 1 || x == 2)
		return 1;
	return fi(x - 1) + fi(x - 2);
}
int main(){
	int n;
	cin>>n;
	while(n--) {
		int a;
		ll res = 0;
		cin>>a;
		res = fi(a);
		cout<<res<<endl;
	}
}

假设输入的a不会超过30,完成下面的判断题和选择题

判断题

1.该程序使用的方法是递推。()
A.正确
B.错误

2.第3行等价于"#define ll long long;"。()
A.正确
B.错误

3.第14行可以改写为"int res=0;"而不会影响结果的正确性。()
A.正确
B.错误

4.执行程序总是会输出一个整数。()
A.正确
B.错误

5.如果a=5,函数fi会被执行9次。()
A.正确
B.错误

选择题

6.输入为"2"和"6 8"时,输出为。
A.“6 16”
B.“8 16”
C.“6 21”
D.“8 21”

答案+解析

1.错。本题使用的是递归,从大到小+回溯求得答案

2.错。"#define"语句的末尾不需要分号。这样原来为"ll n;"的语句会被换成:“long long; n;”,不符合语法

3.对。当输入的a很大时,会出现答案爆int的情况。但题目说输入的a<=30,经计算发现还在int范围内。

4.错。程序虽没有可以形成小数的除法等运算,但如果输入的n<=0,则无输出。

5.对,如下:
s[fi(1)]: 1次
s[fi(2)]: 1次
s[fi(3)]: 3次 = 调用fi(3)+s[fi(1)]+s[fi(2)]
s[fi(4)]: 5次 = 调用fi(4)+s[fi(2)]+s[fi(3)]
s[fi(5)]: 9次 = 调用fi(4)+s[fi(3)]+s[fi(4)]

6.D 可知,斐波那契数列的前8项为:1 1 2 3 5 8 13 21,和D符合

End

这里是 YLCHUP,谢谢大家!

文章同步到洛谷博客,个人洛谷账号:ylch

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值