Bạn Quân là một người yêu toán học nên thường xuyên tính toán với con số. Quân vừa học về số chính phương và đễ dàng viết ra dãy A gồm các số nguyên dương là chính phương theo thứ tự từ bé đến lớn như sau: 1, 4, 9, 16, 25, 36, ...Để xác định một số chính phương là vô cùng dễ dàng. Quân thắc mắc tổng của n số đầu tiên trong dãy là bao nhiêu? Yêu cầu: Cho số tự nhiên n, hãy lập trình tính toán giúp An giá trị T là tổng của n số đầu tiên trong dãy A. Input : Số nguyên dương n ( n ≤ 1010) Output Ghi ra một số nguyên duy nhất là số dư của T trong phép chia cho 2021. Ví dụ SQROOT.INP SQROOT.OUT Nhờ các bạn giúp mình viết CT Pascal

1 câu trả lời

#include <stdio.h>
#include <math.h>

#define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))


int find_square_number(int n){
    //flag = 1 => số chính phương
    //flag = 0 => không phải số chính phương
    
    int flag = 0;

    //Tìm số bất kỳ nhỏ hơn hoặc bằng n mà bình phương bằng n
    int i = 0;
    while(i <= n){
        if( pow( i, 2) == n ) {   
            flag = 1;
            break;
        }
        i++;
    }

    return flag;
}

int main(void){
    int array[] = {5, 4, 16, 2, 8, 7, 3, 9};
    int length= SIZE_OF_ARRAY(array);

    int count = 0;


    printf("Cac so chinh phuong trong mang: ");
    for (size_t i = 0; i < length; ++i) {
        int x = array[i];
        int check = find_square_number(x);
        if (check == 1) { //Tìm thấy số chính phương
            printf("%d ", array[i]);
            ++count;  
        }
    }

    printf("\nSo so chinh phuong trong mang:%d so", count);
    return 0;
}

Câu hỏi trong lớp Xem thêm