分数矩阵
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5312 Accepted Submission(s): 3146
Problem Description
我们定义如下矩阵:
1/1 1/2 1/3
1/2 1/1 1/2
1/3 1/2 1/1
矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。
请求出这个矩阵的总和。
1/1 1/2 1/3
1/2 1/1 1/2
1/3 1/2 1/1
矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。
请求出这个矩阵的总和。
Input
每行给定整数N (N<50000),表示矩阵为 N*N.当N为0时,输入结束。
Output
输出答案,保留2位小数。
Sample Input
1 2 3 4 0
Sample Output
1.00 3.00 5.67 8.83注意:1:水题~2:也可以用递推 日后补上#include<stdio.h> int main (void) { int a,i; double sum2=0.0,sum=0.0; while(~scanf("%d",&a)&&a!=0) { sum2=0.0; double k=1.0; for(i=a;i>1;i--) { sum=(1.0/i)*k; sum2=sum+sum2; k++; } printf("%.2lf\n",a+2*sum2); } return 0; }
//打表法 打表中用到递推
#include<stdio.h> #include<string.h> double a[50001]; double b (void) { int i; memset(a,0,sizeof(a)); a[0]=0; a[1]=1; a[2]=3; for(i=3;i<50000;i++) { a[i]=a[i-1]*2-a[i-2]+2.0/i; } } int main (void) { int n; b(); while(~scanf("%d",&n)&&n) { printf("%.2lf\n",a[n]); } return 0; }