0.Tìm giá trị lớn nhất và tính tổng


Submit solution

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

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

Viết chương trình nhập vào 1 dãy n số nguyên.

Tìm giá trị lớn nhất của: \(\frac{{{a_1}}}{n},\frac{{{a_2}}}{{n - 1}},\,\,...\,,\frac{{{a_n}}}{1}\)

Tính tổng: \(A = ({a_1} + {a_2}) + ({a_2} + {a_3}) + ({a_3} + {a_4}) + ... + ({a_{n - 1}} + {a_n})\)

Đầu vào:

Dòng thứ nhất gồm 1 số nguyên là số phần tử của dãy. (\(1 \le n \le 100\)) Dòng thứ 2 là n số nguyên, phân cách nhau bởi dấu cách.

Đầu ra:

Dòng đầu tiên là giá trị lớn nhất trong các số \(\frac{{{a_1}}}{n},\frac{{{a_2}}}{{n - 1}},\,\,...\,,\frac{{{a_n}}}{1}\) . (làm tròn 2 chữ số thập phân) Dòng thứ hai là tổng A.

Ví dụ:

Input:

3
15 10 6

Output:

6.00
41

Chú ý : Trường hợp \(n=1\) thì \(A=a_1\)

Phan Hữu Tuấn

Comments


  • 0
    longlo2002  commented on March 17, 2023, 8:17 a.m.

    include "bits/stdc++.h"

    int main() { int n; scanf("%d", &n);

    int a[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    
    double max = 0.0;
    for (int i = 0; i < n; i++) {
        double value = (double) a[i] / (double) (n - i);
        if (value > max) {
            max = value;
        }
    }
    printf("%.2f\n", max);
    
    int sum = 0;
    for (int i = 0; i < n - 1; i++) {
        sum += a[i] + a[i + 1];
    }
    printf("%d", sum);
    return 0;

    } cho e hỏi sao lại sao test case 2 nhỉ


    • 0
      Khiem_IT1_INED_63RD  commented on March 17, 2023, 11:04 a.m.

      Nếu mà dãy có 1 phần tử thì theo bạn vòng for tính tổng a[i+1] sẽ bằng bao nhiêu ?


  • -1
    LaHongPhuc_CNTTVA_k62  commented on Nov. 18, 2021, 3:36 p.m. edited

    int main(){ int n; int a[50]; float b[50]; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d ",&a[i]); } for(int i=0;i<n;i++){ b[i]=(float)a[i]/(n-i); } float max=b[0]; for(int i=1;i<n;i++){ if(max<b[i]){ max=b[i]; } } if(n==1){ printf("%d\n%d",a[0],a[0]); } else{ int tong=0; for(int i=1;i<n-1;i++){ tong+=a[i]; } int tongsau=tong*2+a[0]+a[n-1]; printf("%0.2f\n",max); printf("%d",tongsau); }

    return 0; } em bi sai testcase2,mn xem ho em voi a


  • 0
    LãoTam  commented on Sept. 22, 2021, 4:45 a.m.

    [user:^_^] khảo tham

    include<bits/stdc++.h>

    using namespace std; int main(){ int n; cin>>n; int a[n]; for(int i=1; i<=n; i++) cin>>a[i]; float max=(a[1]/float(n)); for(int i=1; i<=n; i++){ if(max<(a[i]/(n-i+1))) max=(a[i]/float(n-i+1)); } cout<<setprecision(2)<<fixed<<max<<endl; long sum=0; if(n==1) { cout<<a[1]; } else { for(int i=1; i<n; i++) { sum+=(a[i]+a[i+1]); } cout<<sum; } return 0; }


  • 0
    CONMEOKEUGAUGAU  commented on Sept. 16, 2021, 8:37 a.m.

    include<stdio.h>

    include<math.h>

    int main() { int n; scanf("%d",&n); int a[101]; for(int i=1 ; i<=n ; i++) { scanf("%d",&a[i]); } double max=(a[1])/n; for(int i=0 ; i<n ; i++) { if((a[i+1])/(n-i)>(a[1])/(n)) max=(a[i+1])/(n-i); } printf("%.2lf\n",max); int tich=0; if(n==1) printf("%d",a[1]); else { for(int i=1 ; i<n ; i++) { tich=tich+(a[i]+a[i+1]); } printf("%d",tich); }

    return 0;

    }

    Dạ sao code em chạy trên dev thì đúng rồi nhưng trên đây lại sai 1 test ạ?


    • 0
      ga123  commented on Sept. 16, 2021, 11:44 a.m.

      code bạn làm tròn sai, kết quả chuẩn phải ra 40.67 ở test 1 nhé


    • 0
      ga123  commented on Sept. 16, 2021, 11:28 a.m. edit 8

      bạn thử tự dò test để biết input thì sẽ gỡ đc lỗi dùng scanf và printf toàn bộ giá trị của test ra


    • 0
      ga123  commented on Sept. 16, 2021, 11:17 a.m.

      bạn vui lòng để code vào trong 3 dấu ` như thế này


  • 1
    ga123  commented on Sept. 8, 2021, 5:57 a.m.

    vì bên dưới có bạn thắc mắc về code nên mình đã làm lại, và dùng cực nhiều hàm để xử lý biến. có thể nói là cực kỳ quá đà và có phần bảo thủ :D nhưng mà cẩn thận không thừa.

    #include"bits/stdc++.h"
    using namespace std;
    double tng(double &a,double &b,double n,double i)
    {
        double ans=0;
        ans=a/(n+1-i);
        ans+=b/(n-i);
        return ans;
    }
    double gtri(double &a,double n,double i)
    {
        double ans;
        ans=a/(n+1-i);
        return ans;
    }
    int main()
    { 
    double *a,max; long i,n,tong=0;
    cin>>n;
    a=(double*) malloc(sizeof(double)*(n+1));
    for(i=1;i<=n;i++)
    {
    cin>>a[i];
    }
    max=gtri(a[1],n,1);
    for(i=1;i<=n;i++)
    {   if(gtri(a[i],n,i)>max)
        max=gtri(a[i],n,i);
    }
    for(i=1;i<n;i+
    {
        tong+=a[i]+a[i+1];
    }
    cout<<"\n";
    if(n!=1)
    {
    cout<<setprecision(2)<<fixed<<max<<"\n";
    cout<<tong;
    }
    else 
    {
    cout<<setprecision(2)<<fixed<<a[1];
    cout<<"\n"<<setprecision(0)<<fixed<<a[1];
    }
    }

  • 0
    LãoTam  commented on Sept. 6, 2021, 2:44 p.m.

    mn xem em sai ở đâu với ạ

    include <iostream>

    using namespace std;

    int main(){ int n,a[1000];

    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    double max=(a[1])/(float)n;
    for(int i=1;i<=n;i++){
        if(max<(a[i])/(n-i+1))
        max=(a[i])/(float)(n-i+1);
    
    }
    printf("%.2f\n",max);
    long T=a[1],S=a[2];
    for(int i=2;i<n;i++){
    
        T+=S+(a[i]+a[i+1]);
    }
    printf("%ld",T);

    }


    • 0
      ga123  commented on Sept. 6, 2021, 3:37 p.m.

      bài có nói rõ trường hợp chỉ có 1 phần tử thì xử lý riêng , bạn thêm trường hợp này r thử lại xem.


      • 0
        LãoTam  commented on Sept. 7, 2021, 2:58 p.m.

        code mình chạy ở dev thì vẫn chạy ngon mà khi gửi thì lại sai 1 test nên mình nghĩtrường hợp n=1 thì khi gắn T=a[1] thì lúc nhập input n=1 và a[1]= 13 thì khi output ra thì sẽ xh 13.00 và 13 mà cần gì xét riêng thêm 1 trường hợp