有个hint,计算w的时候,边界n<=300,但t处理要处理到t[301],以为要计算的是w[n]=w[n-1]+n*t[n+1]。
code:
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int t[350], w[350];
void ready()
{
t[1]=1;
for(int i=2; i<=304; i++)
t[i]=t[i-1]+i;
}
void ok()
{
for(int i=1; i<304; i++)
w[i]=i*t[i+1];
}
int main()
{
int n, c;
int sum;
ready();
ok();
while(scanf("%d", &n)!=EOF)
{
for(int i=1; i<=n; i++)
{
sum=0;
scanf("%d", &c);
for(int j=1; j<=c; j++)
sum+=w[j];
printf("%d %d %d\n",i, c, sum);
}
}
return 0;
}
作者:FreeAquar
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。