📅  最后修改于: 2023-12-03 15:09:28.141000             🧑  作者: Mango
输入一个正整数 Q 和 K,计算在 Fibonacci 数字总和范围内,有多少个数能被 K 整除。
首先需要了解 Fibonacci 数列的定义,Fibonacci 数列的第一个数字为 0,第二个数字为 1,从第三个数字开始,每个数字都是前面两个数字的和。即:
F0 = 0
F1 = 1
Fn = Fn-1 + Fn-2 (n ≥ 2)
接着计算 Fibonacci 数列的前 Q 个数字的总和 sum,需要使用循环计算,代码示例:
long long sum = 0, f1 = 0, f2 = 1, fn;
for (int i = 0; i < Q; i++) {
fn = f1 + f2;
f1 = f2;
f2 = fn;
sum += fn;
}
最后统计在 sum 的范围内,有多少个数字能被 K 整除。可以使用循环判断每个数字是否能被 K 整除,代码示例:
int cnt = 0;
for (long long i = 0; i <= sum; i++) {
if (i % K == 0) {
cnt++;
}
}
#include <iostream>
using namespace std;
int main() {
int Q, K;
cin >> Q >> K;
long long sum = 0, f1 = 0, f2 = 1, fn;
for (int i = 0; i < Q; i++) {
fn = f1 + f2;
f1 = f2;
f2 = fn;
sum += fn;
}
int cnt = 0;
for (long long i = 0; i <= sum; i++) {
if (i % K == 0) {
cnt++;
}
}
cout << cnt << endl;
return 0;
}
时间复杂度:
空间复杂度: