数列1,2,2,3,3,3,4,4,4,4,5,5,5,5,5……编程实现

如题
第一种方式当然是暴力
第二种是看数列规律,1+22+33+…

代码

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
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;
}

你可能感兴趣的:(数学其他,C/C++)