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;
}