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 \(a_1,a_2,...,a_n\) hãy tính các biểu thức căn thức sau

\[S_1= \sqrt{a_n+\sqrt{a_{n-1}+ ... + \sqrt{a_2+\sqrt{a_1}}}}\]

\[S_2= \sqrt{a_1+\sqrt{a_{2}+ ... + \sqrt{a_{n-1}+\sqrt{a_n}}}}\]

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<=10^4)\)

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

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

5 
1 2 3 4 5

Output

2.736
1.756

Ví dụ 2

Input

5 
1 2 -3 4 -5

Output

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

    #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