如题
第一种方式当然是暴力
第二种是看数列规律,1+22+33+…
代码
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<deque>
#include<queue>
#include<stack>
#include<cstdlib>
#include<vector>
#include<cstring>
#include<map>
using namespace std;
typedef long long LL;
const int MOD = 1e9+7, INF = 0x3f3f3f3f;
LL cnt[10005];
void init()
{
for (int i = 1; i <= 10000; i++) {
cnt[i] = i * (i + 1) / 2;
}
}
int main()
{
init();
int n;
while(~scanf("%d", &n)) {
int p = lower_bound(cnt, cnt+n, n) - cnt;
LL ans = 0;
for (int i = 1; i < p; i++) {
ans += i * i;
}
ans += (n - cnt[p-1]) * p;
cout << ans << endl;
}
return 0;
}