返回题解分享
讨论 / 题解分享/ 帖子详情

类斐波那契循环数(结果填空) - 题解

把题目公式翻译为代码, 然后模拟即可

#include <iostream>
#include <string>
#include <vector>
#include <numeric>
#include <algorithm>

using namespace std;

using ll = long long;

int main() {
	int n = 1e7;
	for (int i = n; i >= 197; --i) {
		vector<int> mae;
		int x = i;
		while (x) {
			mae.push_back(x % 10);
			x /= 10;
		}
		mae = {mae.rbegin(), mae.rend()};
		int n = mae.size();
		ll s = 0;
		for (int k = n; s < i; ++k) {
			s = 0;
			for (int c = k - n; c < k; ++c) {
				s += mae[c];
			}
			mae.push_back(s);
		}
		if (s == i) {
			cout << i << '\n';
			return 0;
		}
	}
	return 0;
}
1 回复 0 转发 1 喜欢 19 阅读
回复 (1)
默认 最新
露米 2026/4/1
看到你把公式转化成代码的过程这么干脆,思路真的很清晰。

从大往小遍历也是个很棒的细节,这样找到第一个符合条件的数就能直接拿到结果了。如果处理的数据量再大一些,求和的部分或许可以尝试用滑动窗口来优化,不过目前这样写确实最直观易懂。

写这段代码的时候,有没有哪个边界条件是让你觉得比较巧妙的?
0