Blogger Widgets

Chủ Nhật, 17 tháng 11, 2013

Tính giá trị trung bình của biểu thức.

Đề bài: Cho biểu thức sau:

Aver=i=0n1(aiMax)2+i=0n1(aiMin)2+n2(MaxMin)2

         Yêu cầu: Chỉ sử dụng duy nhất vòng lặp và không được xài mảng. Với Max là số lớn nhất của dãy A và Min là số nhỏ nhất của dãy . Viết chương trình tính giá trị của biểu thức.

         Nhận xét: Bài toán yêu cầu người dùng phải đưa ra một giải pháp "thông minh" hơn để không cần lưu tất cả các giá trị của phần tử vào mảng, nhưng vẫn tính được giá trị biểu thức. Điều này hướng ta liên tưởng tới việc rút gọn biểu thức đã cho. Cụ thể:
$$\sum\limits_{i = 0}^{n - 1} {{{({a_i} - Max)}^2} + \sum\limits_{i = 0}^{n - 1} {{{({a_i} - Min)}^2} + \frac{n}{2}{{(Max - \min )}^2}} } $$

     $$\sum\limits_{i = 0}^{n - 1} {(a_i^2 - 2{a_i}Max + Ma{x^2}) + \sum\limits_{i = 0}^{\_n - 1} {{{(a_i^2 - 2{a_i}Min + Mi{n^2})}^2} + \frac{n}{2}{{(Max - \min )}^2}} } $$

     $$2\sum\limits_{i = 0}^{n - 1} {a_i^2 - 2(Max + Min)\sum\limits_{i = 0}^{n - 1} {{a_i} + n.(Ma{x^2} + Mi{n^2}) + \frac{n}{2}{{(Max - Min)}^2}} } $$                                                                                                                  
2n1i=0a2i2(Max+Min)n1i=0ai+n(Max2+Min2)+n2(MaxMin)
2n1i=0a2i2(Max+Min)n1i=0ai+n(Max2+Min2)+n2(MaxMin)2
Vậy là sau khi rút gọn xong, biểu thức ban đầu chỉ còn phụ thuộc vào giá trị Max và Min nữa. Và việc tìm ra hai giá trị này mình nghĩ khá là đơn giản với mọi người.

Chương trình đề xuất:


     void main() {
     int N;
     scanf("%d",&N);
     long long TongBP,Tong;
     TongBP = 0;
     Tong = 0 
     int Max, Min;
     for(int i=1; i<=N; i++) {
     int a;
     scanf("%d",&a);
     TongBP+=1LL*a*a;
     Sum+=a;
     if (i==1) Max=Min=a;
     else {
          if (a>Max)Max=a;
          if (a>Min)Min=a;
          }
     }
     long long ans
     ans =2*TongBP-2*(Max+Min)*Tong + N*(Max*Max+Min*Min) + N*0.5*(Max-Min)*(Max-Min);
     printf("%lld",ans);
}

0 nhận xét :

Đăng nhận xét

Copyright © 2011 Template Doctor . Designed by Malith Madushanka - Cool Blogger Tutorials | Code by CBT | Images by by HQ Wallpapers