Một số chính phương được gọi là số chính phương chẵn nếu nó là bình phương của một số chẵn.
Ví dụ số 4 là số chính phương chẵn vì 4 là số chẵn và 4=22
Yêu cầu: Cho một dãy số tự nhiên a1,a2,a3,...,an (1<=n<=103), hãy in ra số chính phương chẵn xuất hiệnđầu tiên trong dãy số, nếu không có số chính phương chẵn nào thì ghi ra số “0”.
Dữ liệu vào:
Vào từ tệp Chinhphuong.inp chứa duy nhất một dòng là các số tự nhiêna1,a2,a3,...,an được ngăn cách nhau bởi một ký tự trống (1<=ai<=1012).
Kết quả ra: Ghi ra tệp Chinhphuong.out là số chính phương chẵn xuất hiện đầu tiên trong dãy số đã
cho.
Ví dụ:
Chinhphuong.inp Chinhphuong.out Giải thích
5 9 4 6 4 4=22
(4 là số chẵn)
5 9 7 8 0 Không có số chính phương chẵn
nào trong dãy số
(dùng c++)
Quảng cáo
2 câu trả lời 231
Để giải bài toán này, ta cần kiểm tra từng số trong dãy số và xác định xem nó có phải là số chính phương chẵn hay không. Số chính phương chẵn là một số có thể viết dưới dạng x2x^2, trong đó xx là một số chẵn.
Cách giải:
Đọc dữ liệu đầu vào: Ta sẽ đọc dãy số từ tệp "Chinhphuong.inp".
Kiểm tra điều kiện số chính phương chẵn:Đầu tiên, kiểm tra xem số đó có phải là một số chính phương hay không. Để làm điều này, ta tính căn bậc hai của số và kiểm tra xem căn bậc hai này có phải là một số nguyên không.
Sau đó, kiểm tra xem căn bậc hai đó có phải là một số chẵn hay không.
In kết quả:Nếu tìm thấy số chính phương chẵn đầu tiên, in ra số đó.
Nếu không tìm thấy, in ra "0".
Cài đặt bằng C++:
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
// Hàm kiểm tra xem một số có phải là số chính phương chẵn hay không
bool isPerfectSquareEven(long long x) {
long long root = sqrt(x); // Tính căn bậc hai của x
return root * root == x && root % 2 == 0; // Kiểm tra x có phải là bình phương của một số chẵn
}
int main() {
ifstream infile("Chinhphuong.inp"); // Đọc từ tệp vào
ofstream outfile("Chinhphuong.out"); // Ghi kết quả vào tệp ra
long long num;
bool found = false;
while (infile >> num) { // Đọc từng số trong dãy
if (isPerfectSquareEven(num)) { // Kiểm tra số chính phương chẵn
outfile << num; // Ghi ra số chính phương chẵn đầu tiên
found = true;
break; // Dừng lại khi tìm thấy số đầu tiên
}
}
if (!found) {
outfile << 0; // Nếu không tìm thấy, ghi 0
}
infile.close();
outfile.close();
return 0;
}
Giải thích:
Đọc dữ liệu: Chúng ta dùng ifstream để đọc dữ liệu từ tệp "Chinhphuong.inp".
Hàm isPerfectSquareEven(long long x):Tính căn bậc hai của xx bằng sqrt(x).
Kiểm tra xem số này có phải là số chính phương bằng cách so sánh root2root^2 với xx.
Kiểm tra xem căn bậc hai của số đó có phải là một số chẵn hay không.
Chạy qua từng số trong dãy: Dùng vòng lặp while để đọc từng số từ tệp. Nếu tìm thấy số chính phương chẵn đầu tiên, ta ghi ra tệp "Chinhphuong.out" và dừng vòng lặp.
Kết quả: Nếu không có số chính phương chẵn nào, in ra "0".
Ví dụ:
Dữ liệu đầu vào:
5 9 4 6 4
Dữ liệu đầu ra:
4
Dữ liệu đầu vào:
5 9 7 8 0
Dữ liệu đầu ra:
0
Giải thích ví dụ:
Trong dãy số 5 9 4 6 4, số chính phương chẵn đầu tiên là 4 (vì 4 = 2^2 và 2 là số chẵn).
Trong dãy số 5 9 7 8 0, không có số chính phương chẵn nào, nên kết quả là 0.
Để giải bài toán này bằng C++, chúng ta sẽ đọc dữ liệu từ tệp "Chinhphuong.inp", kiểm tra các số trong dãy để tìm số chính phương chẵn đầu tiên, và ghi kết quả vào tệp "Chinhphuong.out".
Dưới đây là mã C++ để giải bài toán này:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
bool isPerfectSquare(long long n) {
long long root = sqrt(n);
return root * root == n;
}
int main() {
std::ifstream infile("Chinhphuong.inp");
std::ofstream outfile("Chinhphuong.out");
if (!infile.is_open() || !outfile.is_open()) {
std::cerr << "Error opening file!" << std::endl;
return 1;
}
std::vector<long long> numbers;
long long num;
while (infile >> num) {
numbers.push_back(num);
}
infile.close();
for (const auto& n : numbers) {
if (isPerfectSquare(n) && (n % 2 == 0)) {
outfile << n << std::endl;
outfile.close();
return 0;
}
}
outfile << 0 << std::endl;
outfile.close();
return 0;
}
```
Giải thích các bước của chương trình:
1. `isPerfectSquare(long long n)`: Hàm kiểm tra xem một số có phải là số chính phương hay không.
2. Đọc dữ liệu từ tệp "Chinhphuong.inp" vào một vector `numbers`.
3. Duyệt qua các phần tử trong vector `numbers`:
- Nếu phần tử đó là số chính phương và là số chẵn, ghi nó vào tệp "Chinhphuong.out" và kết thúc chương trình.
- Nếu không tìm thấy số chính phương chẵn, ghi số 0 vào tệp "Chinhphuong.out".
Quảng cáo
Bạn muốn hỏi bài tập?
Câu hỏi hot cùng chủ đề
-
Hỏi từ APP VIETJACK
Đã trả lời bởi chuyên gia
44988 -
Hỏi từ APP VIETJACK
Đã trả lời bởi chuyên gia
34460 -
Đã trả lời bởi chuyên gia
30241 -
Hỏi từ APP VIETJACK27169
-
Hỏi từ APP VIETJACK
Đã trả lời bởi chuyên gia
21825
