#5299. 魔法代码
魔法代码
题目描述
在哈利波特的魔法世界中,一位对魔法编程充满热情的年轻巫师,最近在霍格沃茨魔法学院的图书馆里发现了一段古老的魔法代码,这段代码据说能够解决一些复杂的魔法问题,但是有一个限制:数据范围 n 不能超过 100,000,否则魔法就会失效,导致超时。
#include <bits/stdc++.h>using namespace std;
long long n;
long long ans;
int main()
{
cin >>n;
ans = 0;
for (long long i = 1; i <= n; i++)
{
for (long long j = 1; j <= i; j++)
{
long long now = 0;
for (long long k = 1; k <= i; k++)
if (k % 10 == 0)
now += j;
ans += now;
}
}
cout << ans << "\n";
return 0;
}
年轻巫师 知道,如果他直接使用这段代码,虽然能够拿到一些基本的分数,但他想要的是完美无缺的解决方案,这样他才能在魔法编程课上得到更高的分数。于是,他决定使用他的魔法知识和编程技巧来优化这段代码。
首先,年轻巫师检查了代码的效率,发现它使用了太多的循环和重复的计算,这在魔法世界中是不被允许的,因为这会消耗太多的魔法能量。他决定使用一些高级的魔法技巧,比如“空间换时间”的魔法,来减少计算的复杂度。
他开始了他的魔法编程之旅......
经过一番努力,年轻巫师 成功地优化了代码,现在即使数据范围 n 达到 100,000,他的魔法代码也能在一秒钟内完成计算,不会超时。他将这段优化后的代码提交给了魔法编程课的老师,老师对他的创新和魔法技巧赞不绝口。
这就是年轻巫师在霍格沃茨魔法学院的一次魔法编程冒险。他不仅学会了如何优化代码,还学会了如何将魔法和编程结合在一起,创造出更加强大的魔法。
输入格式
第一行一个整数 n。
输出格式
一行一个整数,要求和题目描述中的代码输出一致。
输入数据 1
33
输出数据 1
13645
数据规模与约定
对于 100% 的数据,1≤n≤10^5。
子任务 1(30 分):1≤n≤100 子任务 2(30 分):1≤n≤5000 子任务 3(40 分):没有特殊限制。
Source
比赛题