bài 4: C++ Cho trước 1 dãy gồm N(1 ≤N ≤5000) số nguyên a1,a2,a3,....an, các số trong phạm vi -10000 đến 10000 Yêu cầu Tìm ba số a,b,c trong dãy sao cho tổng S= a^2+b^2+c^2 đạt giá trị lớn nhất Dữ liệu vào Đọc từ bàn phím theo cấu trúc sau +Dòng đầu là số nguyên N +Dòng thứ 2 đọc N số nguyên a1,a2,a3,....,an,mỗi số cách nhau 1 khoảng trắng Kết qủa ra :Xuất ra màn hình 1 số nguyên duy nhất là tổng số S lớn nhất tìm được ví dụ Dữ liệu vào kết quả ra 5 70 3 1 5 2 6 giải thích ví dụ:"Tổng lớn nhất là S=3^2+5^2+6^2=70
2 câu trả lời
#include <vector>
#include <iostream>
#include <algorithm>
#define sqr(x) (x * x)
using namespace std;
int main() {
int n; cin >> n;
vector<int> a(n);
for (int &x: a) cin >> x;
transform(a.begin(), a.end(), a.begin(), [](int x) { return abs(x); });
sort(a.begin(), a.end(), greater<int>());
cout << sqr(a[0]) + sqr(a[1]) + sqr(a[2]);
}
*Mình sẽ làm nhanh: Dùng hàm sort() nhé
*Mình sẽ tính |a[i]| nhé vì $a[i]^{2}$ dù âm hay dương thì cũng sẽ ra số dương và mình để |a[i]| để dùng với hàm sort nhé
#include <bits/stdc++.h>
using namespace std;
long long n;
int main()
{
cin >> n;
long long a[n];
for (long long i=0; i<n; i++)
{
cin >> a[i];
a[i]=abs(a[i]);
}
sort(a,a+n);
reverse(a,a+n);
long long tong=pow(a[0],2)+pow(a[1],2)+pow(a[2],2);
cout << tong;
}