Đ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 106 phần tử trong khoảng [0,109].

Đầ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:

Copy
1 2 0 4 0 0 0 0 9

Đầu ra 1:

Copy
1 2 3 4 5 6 7 8 9

Đầu vào 2:

Copy
0 0 0 0

Đầu ra 2:

Copy
0 0 0 0
QDUY

Comments


  • -1
    Tuyen_Codientu_k63  commented on Dec. 10, 2023, 3:04 p.m.
    Copy
    #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.