Cho e xin ý tưởng bài này với ạ . cpp
Solution:
Ta có những nhận xét sau:
- Để có số thao tác tăng là ít nhất thì ta phải tăng phần tử thứ a[i] thành phần tử lớn nhất trong mảng.
Cách làm:
- Gọi phần tử lớn nhất trong mảng là: k.
- Để biết được a[i] có thể tăng lên thành k hay không thì ta sẽ lấy (k - a[i]) % x.
(x đề bài cho trước)
+ Nếu k - a[i] chia hết cho x thì tức là tăng được thì số lần tăng sẽ += (k - a[i]) / x.
+ Ngược lại là không tăng được thì kết thúc chương trình và in ra -1.
Code mẫu:
/* QUANG VIP PRO */
#include <bits/stdc++.h>
using namespace std;
int n, x, tmp, cnt, check;
int a[100010];
int main(){
cin >> n >> x;
for(int i = 1; i <= n; i++){
cin >> a[i];
tmp = max(tmp, a[i]);
}
for(int i = 1; i <= n; i++){
if((tmp - a[i]) % x == 0)cnt += (tmp - a[i]) / x;
else{
check = 1;
break;
}
}
if(check == 1)cout << -1;
else cout << cnt;
}
`*` Ý tưởng: Nhận thấy nếu tồn tại 1 cách biến đổi thoã mãn, thì số mà sau khi biến đổi tất cả các phần tử bằng nhau chính là số lớn nhất trong mảng.
$\texttt{C++}$
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, ma = 0, x;
cin >> n >> x;
vector<int> a(n + 1);
for (int i = 1; i <= n; i++) cin >> a[i], ma = max(ma, a[i]);
int ans = 0;
for (int i = 1; i <= n; i++) {
if ((ma - a[i]) % x != 0) {
return cout << -1, 0;
}
else ans += (ma - a[i]) / x;
}
cout << ans;
return 0;
}
Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!
Lớp 10 - Năm đầu tiên ở cấp trung học phổ thông, chúng ta sẽ có nhiều bạn bè mới đến từ những nơi khác nhau. Ngôi trường mới, xa nhà hơn, mở ra một thế giới mới với nhiều điều thú vị. Hãy mở lòng đón nhận và tận hưởng những trải nghiệm mới!
Copyright © 2021 HOCTAPSGK