一道ACM的水题,不知道为什么会溢出,新人求助
一千零一液时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 157 测试通过 : 44
描述
小时候的YB,有一个特殊的癖好,就是收集各种液体,他家的柜子上已经摆满了他所收集的液体,而他家的柜子正好有10001排。每一排都摆放了不同的液体数量,第一排的液体总数是1,第二排液体总数是2+3+4,第三排的液体总数是5+6+7+8+9,依此类推。由于YB对一种叫做“欧液”的液体情有独钟,所以,他在除了第一排以外的每一排都放置了这种液体,而对于任意一排的欧液数,始终都等于它前一排的不是欧液的液体总数。现在,YB已经收集了所有的液体,他现在要给每一排编号,即他想知道在第几排一共有多少的液体.以及这一排有多少的欧液
输入
第一行有一个整数t(0<t<=10),表示有t组测试数据,对于每组测试数据,只有一个正整数n(0<n<=10001)。
输出
输出有2个数,用空格隔开,分别是第n排的所有液体总数以及第n排欧液的液体数。
样例输入
3
1
3
2
样例输出
1 0
35 8
9 1
我的程序:
#include<stdio.h>
ouye(long int a[],long int b[],int n)
{
if(n==1)
return b[1]=0;
else
return b[n]=a[n-1]-ouye(a,b,n-1);
}
main()
{
int t,n,i,j,k;
long int b[10002],a[10002];
scanf("%d",&t);
a[1]=1;
for(i=2;i<=10001;i++)
{
a[i]=0;
for(j=(i-1)*(i-1)+1;j<=i*i;j++)
a[i]+=j;
}
for(i=0;i<t;i++)
{
scanf("%d",&n);
printf("%d %d\n",a[n],ouye(a,b,n));
}
}