题目:来源于洛谷

分析:
运算规律就是:1 2 2 3 3 3 4 4 4 4…
我还是用暴力求解,一点都不优雅m( _ _ )m,两个for循环,外层控制 之后的多少天,内层控制 之后的多少天里 的 第几天
话不多说,看看代码吧:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int k, sum = 0, count = 0, flag = 0; //count是统计第一天,flag辅助跳出外层循环
cin >> k;
for (int i = 1; ;++i) {
for (int j = 1; j <= i; ++j) {
sum += i;
count++;
if (count == k) {
flag = 1;
break;
}
}
if (flag) {
break;
}
}
cout << sum << endl;
return 0;
}
肯定还有更好的解法,我刚开始想的是可以利用平方数来求,现在想想,也差不多
来来来,看看代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int k, sum = 0, i = 1;
cin >> k;
while (k>0) {
sum += i*i;
k -= i;
i++;
}
cout << sum+k*(i-1) << endl;
return 0;
}
最后输出的这个公式,我是用k=7来推算出来
算了,再刷一题,换个战场!
╰( ̄ω ̄o)
这篇博客探讨了如何计算特定数字序列的和。作者首先使用双层循环的暴力求解方法,然后优化为利用平方数计算,减少了时间复杂度。通过两种不同思路的代码展示,解释了问题的解决过程,并鼓励读者思考更优的解决方案。
789

被折叠的 条评论
为什么被折叠?



