一、编程题(共5题,共100分)
1.
最近的斐波那契数
最近的斐波那契数
斐波那契数列
F
n
的定义为:对 n ≥ 0 有 F
n+2
= F
n+1
+ F
n
,初始值为 F
0
= 0 和 F
1
= 1。所谓与给定的整数 N
最近的斐波那契数
是指与 N 的差之绝对值最小的斐波那契数。
本题就请你为任意给定的整数 N 找出与之最近的斐波那契数。
时间限制:1000
内存限制:65536
输入
输入在一行中给出一个正整数 N(≤ 10
8
)。
输出
在一行输出与 N 最近的斐波那契数。如果解不唯一,输出最小的那个数。
样例输入
305
样例输出
233
提示
样例解释 部分斐波那契数列为 { 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, ... }。可见 233 和 377 到 305 的距离都是最小值 72,则应输出较小的那个解。
试题编号:20241207-3-01
试题类型:编程题
标准答案:
试题难度:一般
试题解析:
展示地址:
点击浏览
考生答案:(此题已作答)
考生得分:20
是否评分:已评分
#include<iostream>
#include<bits/stdc++.h>
#include<math.h>
using namespace std;
int main(){
int n[101];
n[0]=0,n[1]=1;
for(int i=2;i<43;i++){
n[i]=n[i-1]+n[i-2];
}
int N;
cin>>N;
int min_diff=9999999;
int temp[101]={0},j=0;
for(int i=0;i<43;i++){
if(abs(n[i]-N)<min_diff){
min_diff=abs(n[i]-N);
temp[j++]=n[i];
}
}
cout<<temp[j-1];
return 0;
}
评价描述:
2.
构造性证明
构造性证明
关于数学定理证明,也有高下之分。最暴力的证明方法是“构造性证明”,即当需要证明某种解存在时,直接把解构造出来,而不是仅通过推理证明解之存在。
下面有一个定理:
设 a
i
(i=1, … , 5)均为正实数。则一定存在 4 个互不相同的下标 i、j、k、l,使得 |a
i
/ a
j
- a
k
/ a
l
| < 1/2。
作为程序员,就请你编写程序构造出正确的下标,验证这个结论。
时间限制:1000
内存限制:65536
输入
输入在一行中顺序给出 5 个正实数。为保证计算中不产生浮点溢出,我们令输入的数字在 [10
-10
, 10
10
] 区间内,且小数点后不超过 10 位小数。
输出
在一行中首先输出使得定理结论成立的下标有多少套,随后输出最小的一套下标。数字间以 1 个空格分隔,行首尾不得有多余空格。 注:所谓下标集 {i
1
, …, i
4
} 小于下标集 {j
1
, …, j
4
},是指存在 1 ≤ k ≤ 4 使得 i
l
=j
l
对所有 l < k 成立,且 i
k
< j
k
。
样例输入
3.12 5.27 0.0007 9825.4413 10
样例输出
18 1 4 3 2
提示
样例解
2024 年12 月 C语言等级考试 3级真题