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 ~A~ bao gồm ~n~ số nguyên nhập từ bàn phím. Hãy viết chương trình biến đổi mảng theo quy tắc sau:
- Tại các chỉ số lẻ của mảng, tăng giá trị của phần tử đó thêm 1 lượng đúng bằng chênh lệch 2 phần tử lân cận của nó.
- Trong trường hợp không có lân cận trái hoặc phải, coi như lân cận bị thiếu đó có giá trị là 0.
- Chỉ số mảng được tính bắt đầu từ 0
Giải thích:
- Phần tử lân cận trái của ~A_i~ là ~A_{i-1}~, với ~i > 0~
- Phần tử lân cận phải của ~A_i~ là ~A_{i+1}~, với ~i < n - 1~
Input
- Dòng đầu tiên là số nguyên dươ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 ~A~
Trong đó
- ~n \le 10^4~
- ~|A_{ij}| \le 10^8~
Output
Mảng sau khi đã biến đổi theo quy tắc, các phần tử cách nhau 1 dấu cách.
Sample
Input #1
4
1 3 2 5
Output #1
1 4 2 7
Bình luận
bao ac
include "iostream"
include <stdio.h>
include <bits/stdc++.h>
using namespace std; typedef long long ll; ll m = -1000000000000; ll n; bool check = true; int main() { ios::syncwithstdio(false); cin.tie(nullptr);cout.tie(nullptr); cin >> n; ll mang[n]; for(ll i = 0; i < n; i++) { cin >> mang[i]; } for(ll i = 0; i < n-1; i++) { if(i%2 != 0) cout << mang[i]+abs(mang[i-1]-mang[i+1]) << " "; else cout << mang[i] << " "; } if((n-1)%2 != 0) cout << mang[n-1]+mang[n-2] << " "; else cout << mang[n-1] << " "; }
Này mình viết theo phong cách của mình thôi nên bạn nào tham khảo thì tham khảo nhé! AC hết nhé!
include <bits/stdc++.h>
using namespace std; void solve(){ int n; cin >> n; vector<int> arr; for(int i=0;i<n;i++){ int x; cin >> x; arr.pushback(x); } arr.pushback(0); for(int i=1;i<n;i+=2){ arr[i]+=abs(arr[i-1]-arr[i+1]); } for(int i=0;i<n;i++){ cout << arr[i] << " "; } } int main(){ solve(); }
include<bits/stdc++.h>
using namespace std; int main() { int n; cin>>n; int a[n]; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n-1;i++){ if(i%2!=0) { int p=abs(a[i-1]-a[i+1]); a[i]+=p; } } if((n-1)%2!=0) a[n-1]+=a[n-2]; for(int i=0;i<n;i++) cout<<a[i]<<" "; return 0; }
include <bits/stdc++.h>
define ll long long
using namespace std; void init(ll a[], ll n){ for(int i = 0 ; i < n; i++){ cin>>a[i]; } } void sol(ll a[], ll n){ for(int i = 0 ; i < n; i++){ if(i%2!=0){ a[i] += abs(a[i-1] - a[i+1]); } } }
int main() { ll a[100000] = {0}; ll n; cin>>n; init(a,n); sol(a,n); for(int i = 0 ;i < n; i++){ cout<<a[i]<<" "; } return 0; }
include <bits/stdc++.h>
using namespace std; vector<int> trans(const vector<int>& a) { int n = a.size(); if (n <= 1) { return a; }
}
int main() { int n; cin >> n;
}
Đã AC, Java 8+ các bạn tham khảo, nếu thấy hay up vote cho mình nhé :D
Cho minh hoi la tai sao cai test cua de bai no khong bien doi gia tri 1 vay. Mot cung la so le ma.
Mọi chỉ số trong mảng có vị trí bắt đầu từ 0 bạn nhé.Đề bài yêu cầu là biến đổi số ở vị trí lẻ chứ ko phải là biến đổi số lẻ nha bạn :)
cảm ơn đã gợi ý:v đọc nhầm
vi tri trong mang bat dau tu 0 ma
ban giai thich chi tiet hon dc ko aj
Chi tiết hơn là thế này né:
mảng:1 3 2 5
vị trí : 0 1 2 3
ở đây cta biến đổi phần tử có vị trí lẻ nha cậu
Tức là biến đổi số 3 và số 5
mik cam on aj
def transform_array(arr): n = len(arr) if n <= 1: return arr
n = int(input()) a = list(map(int, input().split())) a = transform_array(a) for i in a: print(i, end=' ')
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Vì vị trí bắt đầu từ 0 nên số 1 có vị trí là 0 còn số 2 có vị trí là 2 bạn nhé