HDU2156 分数矩阵

    xiaoxiao2021-03-25  155

    分数矩阵

    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,对角线两边分数的分母逐个递增。 请求出这个矩阵的总和。   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

    递归做

    #include<stdio.h> double number(int n) { int i; double num1=0; for(i=n;i>1;i--) {    num1+=(double)1/i+(double)1/(i-1); } num1+=(double)1/n; if(n==1) return 1; else if(n==0) return 0; else  return num1+number(n-1); } int main() {   double number(int n); int n;   double num=0; while(~scanf("%d",&n)) {   if(n==0) return 0; else{ num=number(n); printf("%.2lf\n",num);} } } 以对角线分开,两边对称着做(作为新人我不知道这种算法叫啥。。。。)

    #include<stdio.h>   int main ( )   {       int n,i;       double num1=0,num2=0;       while(~scanf("%d",&n))       {           sum2=0;           double k=1; if(n==0) return 0;           for(i=n;i>1;i--)           {               (double)num1=(1/i)*k;               (double)num2=num1+num2;               k++;           }           printf("%.2lf\n",n+2*sum2);       }       return 0;   }  

    转载请注明原文地址: https://ju.6miu.com/read-3759.html

    最新回复(0)