Source:
#include<stdio.h> #include<math.h> int a; double c[205],l[205],r[205]; int main() { int n,i,j; double F,fzuo; while(scanf("%d",&n)!=EOF) { for(i=0;i<=n;i++)c[i]=r[i]=l[i]=0;//置零 for(i=1;i<n;i++) for(j=1;j<=i;j++) { scanf("%d",&a);//读数 c[j]+=a;//a[i][j]的质量分解到哪里了? c[n-i+j]+=a; l[j]+=a; r[n-i+j]+=a; } for(j=1;j<=n;j++){scanf("%d",&a); c[j]=c[j]/2+a;}//没加的最后一行质量加上 F=fzuo=0; for(j=1;j<n;j++)//判断左压力的加到哪 { F+=(l[j]-r[j]); if(F>fzuo)fzuo=F; } fzuo*=sqrt(3)/6;//分解到水平方向 double max=c[1];//找出最大的对地面的压力点 for(j=2;j<=n;j++) if(c[j]>max)max=c[j]; printf("%.2lf %.2lf/n",fzuo,max); } return 0; }