VT08 - Biến đổi mảng 1 chiều

Xem dạng PDF

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, PyPy, 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

Please read the guidelines before commenting.



  • 1
    taidotai  đã bình luận lúc 16, Tháng 4, 2026, 8:48

    include <iostream>

    include <vector>

    include <cmath>

    using namespace std ; int main () { int n ; cin >> n ;

    vector<int> a(n) ;
    vector<int> j ;
    
    for (int i = 0 ; i < n ; i++ ){
        cin >> a[i] ;
    }
    
    for (int i = 0 ; i < n ; i++ ){
        if (i % 2 != 0){
            int l = (i - 1 >= 0) ? a[i-1] : 0 ;
            int r = (i + 1 < n ) ? a[i+1] : 0 ;
            int hieu = abs(r - l) ;
            int d = a[i] + hieu ;
            j.push_back(d) ;
        }
        else {
            j.push_back(a[i]) ;
        }
    }
    for (int i = 0 ; i < (int)j.size() ; i++ ){
        cout << j[i] << " " ;
    }
    

    }


  • 2
    nhankiettvt  đã bình luận lúc 29, Tháng 1, 2026, 7:54

    FULL AC CHO AE DÂY=))

    #include <bits/stdc++.h>
    using namespace std;
    using ll = long long;
    using ull = unsigned long long;
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int n;
        cin >> n;
        vector<int> a(n + 1, 0);
        for (int i = 0; i < n; i++)
        {
            cin >> a[i];
        }
        for (int i = 0; i < n; i++)
        {
            if (i % 2 != 0)
            {
                a[i] += abs(a[i - 1] - a[i + 1]);
            }
        }
        for (int i = 0; i < n; i++)
        {
            cout << a[i] << ' ';
        }
        return 0;
    }
    

  • 1
    Duong_Thanh_Khiem_L8  đã bình luận lúc 23, Tháng 1, 2026, 14:28

    FULL AC cho ai cần nha:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
    
        vector&lt;long long> a(n), b(n);
        for (int i = 0; i < n; i++) {
            cin >> a[i];
            b[i] = a[i];
        }
        for (int i = 1; i < n; i += 2) {
            int trai = 0;
            int phai = 0;
            if (i - 1 >= 0) {
                trai = a[i - 1];
            }
            if (i + 1 < n) {
                phai = a[i + 1];
            }
            long long chenhlech = abs(trai - phai);
            b[i] = a[i] + chenhlech;
        }
    
        for (int i = 0; i < n; i++) {
            cout << b[i] << " ";
        }
    
        return 0;
    }
    

  • -5
    52500146  đã bình luận lúc 31, Tháng 12, 2025, 4:13

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -2
    nguyentungbach_  đã bình luận lúc 7, Tháng 12, 2025, 8:15

    Cho mảng bao gồm 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 là , với Phần tử lân cận phải của là , với Input Dòng đầu tiên là số nguyên dương Dòng tiếp theo là số nguyên tương ứng là các phần tử của mảng Trong đó

    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 Copy 4 1 3 2 5 Output #1 Copy 1 4 2 7


  • 2
    anhcuong041012  đã bình luận lúc 3, Tháng 12, 2025, 11:28

    include <bits/stdc++.h>

    using namespace std; int n,a[10005],i,l,r; int main() { cin >> n; for (int i =0 ; i< n ; i++) cin >> a[i];{ for (int i =1 ; i< n;i+=2) a[i]+=abs(a[i-1]-a[i+1]); } for (int i =0 ;i < n ; i++) cout <<a[i]<<" ";

    return 0;
    

    }


  • 0
    ngu  đã bình luận lúc 9, Tháng 10, 2024, 2:59

    là sao tôi ko hiểu?


  • 3
    thh  đã bình luận lúc 21, Tháng 1, 2024, 4:40

    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 :)


  • 16
    thh  đã bình luận lúc 21, Tháng 1, 2024, 4:47 sửa 4

    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


    • 0
      HHVinh007  đã bình luận lúc 2, Tháng 12, 2024, 15:39

      cam on ban!


    • 0
      ngtuananh  đã bình luận lúc 29, Tháng 1, 2024, 12:24

      mik cam on aj


  • 1
    thh  đã bình luận lúc 21, Tháng 1, 2024, 4:42

    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é