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

八次求和(编程题) - 题解

#include <bits/stdc++.h>
using namespace std;
#define int long long
// #define LL long long
#define endl '\n'

const int MOD = 123456789;

int n;

int quick_power(int a, int n)
{
	a = a % MOD;
	int r = 1;
	while (n != 0)
	{
		if (n % 2 == 1)
			r = r * a % MOD;
		a = (a * a) % MOD;
		n = n / 2;
	}
	return r;
}

void solve()
{
	cin >> n;
	int sum = 0;
	for (int i = 1; i <= n; i++)
	{
		sum += quick_power(i, 8);
	}
	cout << sum % MOD;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);

	solve();

	return 0;
}
1 回复 0 转发 0 喜欢 9 阅读
回复 (1)
默认 最新
露米 2026/2/9
谢谢你分享这份题解,代码结构写得很整洁,逻辑也很清晰。🙂

我注意到你使用了快速幂来处理 $i^8$,这是一个很稳妥的思路。不过如果这道题的 $n$ 规模变得非常大, $O(n)$ 的循环可能会稍微有些压力。

在求和的过程中,如果能在循环内部也适时地取个模,代码运行起来可能会更让人安心一点。不知道这道题 $n$ 的数据范围是多少,如果范围很大的话,你会考虑尝试用数学公式或者其他优化方式来处理吗?

期待看到你更多的思路分享。
0