Biểu thức căn thức trên dãy


Submit solution

Points: 2
Time limit: 1.0s
Memory limit: 977M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Toto học lập trình trên dãy số thực kiểu double và được thầy Titi cho bài tập như sau:

Cho dãy số thực a1,a2,...,an hãy tính các biểu thức căn thức sau

S1=an+an1+...+a2+a1

S2=a1+a2+...+an1+an

Tư duy về toán chưa tốt cộng với quá nhiều dấu căn của hai biểu thức ngược xuôi dẫn tới Toto như chìm trong mê cung kiến thức không thể lập trình nổi bạn hãy lập trình giúp Toto nhé

Input

Dòng đầu chứa số nguyên dương n (1<=n<=104)

Dòng tiếp theo chứa n số thực có giá trị tuyệt đố không vượt quá 104

Output

Dòng thứ nhất nếu tính được S1 xuất ra S1 với độ chính xác 3 chữ số sau dấu chấm thập phân, nếu không tính được xuất ra "Khong tinh duoc S1"

Dòng thứ nhất nếu tính được S2 xuất ra S2 với độ chính xác 3 chữ số sau dấu chấm thập phân, nếu không tính được xuất ra "Khong tinh duoc S2"

Ví dụ 1

Input

Copy
5 
1 2 3 4 5

Output

Copy
2.736
1.756

Ví dụ 2

Input

Copy
5 
1 2 -3 4 -5

Output

Copy
Khong tinh duoc S1
Khong tinh duoc S2
tichpx

Comments


  • 1
    hoanghai_CNTT6_K61  commented on Nov. 18, 2021, 4:13 p.m.

    xem giúp mình bài này với ạ

    chạy trên devC kqua vẫn ok nma nộp lại k được test nào

    Copy
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n,d=0;
        double a[100],s1=0,s2=0;
        cin>>n;
        for (int i=0 ; i<n ; i++)
        {
            cin>>a[i];
            if (a[i]<0) d++;
        }
        if (d!=0)   cout<<"Khong tinh duoc S1"<<endl<<"Khong tinh duoc S2";
        else
        {
            for (int i=n-1 ; i>=0 ; i--)
            {
    //          cout<<"s1= "<<s1<<" a["<<i<<"]= "<<a[i]<<endl;
                s1=sqrt(a[i]+s1);
            }
            for (int i=0 ; i<n ; i++)
            {
    //          cout<<"s2= "<<s2<<" a["<<i<<"]= "<<a[i]<<endl;
                s2=sqrt(a[i]+s2);
            }
            cout<<setprecision(3)<<fixed<<s2<<endl<<s1;
        }
    }

    • 1
      LãoTam  commented on Nov. 18, 2021, 4:23 p.m.

      vd a1=10, a2=-2 thì căn(-2+căn(10))= căn(-2+3.162)= căn(1.162) vẫn đúng. nên ô xét if(a[i]<0) mà kết luận luôn ko tính được là sai rồi