hdu2156输出的数据和别人弄得一样,确实错的,不知道怎么回事?求指导
我们定义如下矩阵:1/1 1/2 1/3
1/2 1/1 1/2
1/3 1/2 1/1
矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。
请求出这个矩阵的总和。
每行给定整数N (N<50000),表示矩阵为 N*N.当N为0时,输入结束。
输出答案,保留2位小数。
1
2
3
4
0
1.00
3.00
5.67
8.83
我的代码
#include<stdio.h>
int main()
{
int i,j;
int n;
while(scanf("%d",&n)==1&&n&&n<5000)
{
double t=0;
for(i=1;i<n;i++)
{
for(j=2;j<=n+1-i;j++)
t+=1.0/j;
}
t*=2;
t+=n;
printf("%.2lf\n",t);
}
return 0;
}
别人的代码:
#include<stdio.h>
int main(){
int n;
while(scanf("%d",&n) && n){
double sum=0;
int i;
sum+=n*1;
for(i=2;i<=n;i++){
sum+=1.0/i*(n-i+1)*2;
}
printf("%.2lf\n",sum);
}
return 0;
}