Điền cấp số cộng


Submit solution

Points: 1.5 (partial)
Time limit: 1.0s
Memory limit: 67M

Author:
Problem types
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Cho dãy số tự nhiên \((u)\), nhiệm vụ của bạn là thay thế - hoặc để nguyên các số \(0\) trong dãy bởi một số tự nhiên bất kì để thu được cấp số cộng.

Đầu vào

Một dãy số nguyên có từ \(3\) tới \(10^6\) phần tử trong khoảng \([0, 10^9]\).

Đầu ra

Dãy số sau khi đã thay các số \(0\).

Chú ý: Dãy số đã cho có ít nhất hai số khác \(0\), và luôn có duy nhất một cách thay tạo thành cấp số cộng.

Ghi chú: Để đọc hết các số bạn hãy sử dụng vòng lặp while(cin >> n).

Ví dụ

Đầu vào 1:

1 2 0 4 0 0 0 0 9

Đầu ra 1:

1 2 3 4 5 6 7 8 9

Đầu vào 2:

0 0 0 0

Đầu ra 2:

0 0 0 0
QDUY

Comments


  • -1
    Tuyen_Codientu_k63  commented on Dec. 10, 2023, 3:04 p.m.
    #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
        int n; 
    
        scanf("%d", &n);
    
        int *px;
    
        px = (int *)calloc(n, sizeof(int));
    
        for(int i = 0; i< n; i++){
            scanf("%d", px + i);
        }
    
        int congsai, start, end, start1, end1;
        for(int i = 0; i < n; i++){
            if(px[i] != 0){
                start = px[i];
                start1 = i;
                break;
            }
        }
    
        for(int i = n - 1; i >= 0; i--){
            if(px[i] != 0){
                end = px[i];
                end1 = i;
                break;
            }
        }
        congsai = (start - end)/(start1 - end1);
        for(int i = 1; i< n; i++){
            if(px[i] == 0){
                px[i] = px[i - 1] + congsai;
            }
    
        }
    
        for(int i = 0; i < n; i++){
            if(px[i] == 0){
                px[i] = px[i + 1] - congsai;
            }
        }
    
         for(int i = 0; i< n; i++){
            printf("%d ", px[i]);
         }
    
    }

    Admin có thể giúp em sửa xem code này sai đâu được không ạ


  • 1
    creator  commented on Sept. 16, 2023, 3:29 p.m.

    Cập nhật đề bài: Dãy số đã cho có ít nhất hai số khác 0 và có cách thay tạo thành cấp số cộng.