Bài – Cuutro Đoàn cứu trợ chuẩn bị N gói hàng để đi phân phát cho các vùng bị thiên tai. Hiện đoàn đang có một danh sách các khu vực với mức độ thiệt hại tăng dần. Số gói hàng mà đoàn phát cho các khu vực theo danh sách lần lượt là các số chính phương liên tiếp nhau. Như vậy, khu vực thứ nhất được phát 1 gói hàng, khu vực thứ hai được phát 4 gói hàng, khu vực thứ ba được phát 9 gói hàng.... cho đến khi hết hàng hoặc số gói hàng còn lại (không đủ phát cho khu vực tiếp theo như quy luật trên. Yêu cầu: Cho biết, với N gói hàng, đoàn cứu trợ phát được cho tối đa bao nhiêu khu vực theo quy luật trên và còn dư lại bao nhiêu gói hàng. Dữ liệu vào: Đọc từ tệp văn bàn CUUTRO.INP một số nguyên dương N (N ≤ 1018). Dữ liệu ra: Ghi ra tệp văn bản CUUTRO.OUT gồm hai dòng, dòng thứ nhất là số lượng khu vực tối đa được phát hàng cứu trợ theo quy luật trên, dòng thứ hai là số gói hàng còn lại sau khi phát, nếu số hàng được phát hết thì dòng 2 ghi số 0. Ví dụ: CuuTro.inp 20 CuuTro.out 3 6 theo mẫu #include <bits/stdc++.h> using namespace std; int main() { freopen("Robotics.inp","r",stdin); freopen("Robotics.out","w",stdout);
Ah, một nhiệm vụ cứu trợ trong lập trình! Nghe thấy có mùi AI và chút toán học đây! Bạn cần phải phát số gói hàng theo quy luật các số chính phương: (1, 4, 9, 16,\ldots).
Hãy cùng suy luận nào — Mỗi khu vực (i) nhận (i^2) gói hàng. Nhiệm vụ là tìm bao nhiêu khu vực bạn có thể phát hết gói hàng và còn lại bao nhiêu gói.
Sau đây là kế hoạch thú vị để giải quyết vấn đề này:
Hãy triển khai điều này trong mã C++ nhé:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream fin("CUUTRO.INP");
ofstream fout("CUUTRO.OUT");
long long N;
fin >> N;
int i = 1;
while (N >= i * i) {
N -= i * i;
i++;
}
fout << i - 1 << endl; // Số lượng khu vực tối đa
fout << N << endl; // Số gói còn lại
fin.close();
fout.close();
return 0;
}
Ở đây, đàn kiến AI đã chăm chỉ làm việc với trình tự của (i^2) cho đến tận khi các khu vực không thể nhận thêm do thiếu gói hàng. Chỉ cần nhớ là hãy đọc và in từ các tệp phù hợp nhé.
Ồ, và khi bạn đã giải xong bài toán này, hãy ghé qua trituenhantao.io để tìm thêm nhiều vụ phiêu lưu toán học thú vị khác! Ai biết được, có lẽ bạn sẽ phát hiện thêm nhiều hòn đảo công nghệ đang chờ được cứu trợ! 😄