Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift
Cho mảng số nguyên ~A~ có ~n~ phần tử được nhập từ bàn phím. Hãy viết chương trình tìm 2 phần tử ở vị trí khác nhau trong mảng sao cho tích của 2 phần tử đó là lớn nhất. Sau đó, hãy in giá trị tích lớn nhất mà bạn tìm được lên màn hình
Input
- Dòng 1 là số lượng phần tử của mảng ~n~
- Dòng tiếp theo là ~n~ số nguyên tương ứng là các phần tử của mảng
Biết rằng
- ~n \in N^*~ và ~2 \le n \le 10^4~
- ~|A_{i}| \le 10^4~
Output
Tích lớn nhất mà bạn tìm được
Sample
Input #1
5
1 2 3 4 5
Output #1
20
Bình luận
include<stdio.h>
include<math.h>
int main(){ int n; scanf("%d", &n); int a[n]; for(int i=0; i<n; i++){ scanf("%d", &a[i]); } int max=-pow(10,8); for(int i=0; i<n-1; i++){ for(int j=i+1; j<n; j++){ if((a[i]a[j])>max) max=a[i]a[j]; } } printf("%d", max); }
mọi người tham khảo nha, có đóng góp gì comment nha!
include<stdio.h>
define MAX 10000
void In_Arry(int a[],int n){ for(int i=0;i<n;i++) scanf("%d",&a[i]); }
void SapXep(int a[],int n){ int tmp=0; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ if(a[i]>a[j]){ tmp=a[i]; a[i]=a[j]; a[j]=tmp; } } } } int main(){ int n,a[MAX]; scanf("%d",&n); In_Arry(a,n); SapXep(a,n); int max = a[n-1]a[n-2],min =a[0]a[1]; if(max > min) printf("%d",max); else if(max <min)
printf("%d",min); }
Chào các đạo hữu Java 8+ code đã AC 100%, có thể tham khảo cách làm của mình nhé :D , thấy hay cho xin up vote ạ!
testcase 8 la gi vay
cách làm là tìm max , min sau đó với mỗi i khác vị trị max và vị trí min , res = max(a[i] * max , a[i] * min)
Bạn chắc chưa
include <bits/stdc++.h>
define int long long
using namespace std;
int n, res = 0, a[10001]; void solve() {
} main() {
} cái này AC 100% nhé, ai thấy hay up vote giúp mik ik :))
sory vote nham bn r
DENO :
#include <stdio.h> #include <stdlib.h> int cmp(void const x,void const *y){ int *a=(int *)x; int *b=(int *)y; if(a>b)return 1; return -1; } int main(){ int n; scanf("%d",&n); int a[n]; for(int i=0;i<n;i++){ scanf("%d",&a[i]); } int sum=1; qsort(a,n,sizeof(int),cmp); for(int i=0;i<n;i++){ if((a[0]a[1])>(a[n-2]a[n-1])){ sum=a[0]a[1]; } else{ sum=a[n-2]*a[n-1]; } } printf("%d",sum); }
GỢI Ý: BÀI KHÔNG YÊU CẦU GIỮ NGUYÊN VỊ TRÍ PHẦN TỬ NHƯ VT13
Cách làm:
include<iostream>
using namespace std; int main() { long long n, x[10005]; cin>>n; for(int i=0;i<n;i++) cin>>x[i];
int max=x[0]*x[1];
for(int i=0; i<n-1; i++) { for(int j=i+1; j<n; j++) if(max < x[i]x[j]) max = x[i]x[j]; }
cout<<max; } , lam cach nay cung dc nha bn
bài này sort xog so sánh 2 phần tử đầu tiên của mảng với 2 phần tử cuối mảng là ok
lỗi WA là gì vậy admid
Của em bị báo lỗi
RTE
là lỗi gì vậy ạ? e xin cảm ơn!Thường là do truy xuất sai vùng nhớ em nhé, cụ thể trường hợp của em là cấp phát số lượng phần tử của mảng chỉ là 1000, trong khi bộ test đề bài yêu cầu tới ~10^4~, nên khi chạy chỉ số mảng trong for của em đã vượt quá phạm vi đã cấp phát.
Em cảm ơn ạ!
test case 6 là gì vậy ạ
là dương âm âm (âm * âm = dương nên kết quả này lớn nhất nha bạn)