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\)
Comments
include "bits/stdc++.h"
int main() { int n; scanf("%d", &n);
} cho e hỏi sao lại sao test case 2 nhỉ
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 ?
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
[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; }
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); }
}
Dạ sao code em chạy trên dev thì đúng rồi nhưng trên đây lại sai 1 test ạ?
code bạn làm tròn sai, kết quả chuẩn phải ra 40.67 ở test 1 nhé
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
bạn vui lòng để code vào trong 3 dấu
` như thế này
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.
mn xem em sai ở đâu với ạ
include <iostream>
using namespace std;
int main(){ int n,a[1000];
}
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.
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