Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
0.01s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift
- Cho một số nguyên dương ~n~, hãy viết chương trình trả lời câu hỏi: Để phân chia một số nguyên dương bất kì không vượt quá ~n~ sao cho số bình phương được sử dụng ít nhất, ta cần nhiều nhất bao nhiêu bình phương?
Input
- Số nguyên dương ~n (1 \le n \le 10^{18})~.
Output
- Đáp án của câu hỏi trên.
- Lưu ý: Đáp án có thể rất lớn nên hãy in ra đáp án sau khi chia dư cho ~10^9 + 7~.
Sample
Input #1
1
Output #1
1
Input #2
3
Output #2
3
Input #3
4
Output #3
3
Hint
Giải thích #3:
- ~1 = 1^2~, sử dụng ít nhất ~1~ số bình phương,
- ~2 = 1^2 + 1^2~, sử dụng ít nhất ~2~ số bình phương,
- ~3 = 1^2 + 1^2 + 1^2~, sử dụng ít nhất ~3~ số bình phương,
- ~4 = 2^2~, sử dụng ít nhất ~1~ số bình phương,
Vậy để phân tích số bất kì không vượt quá ~n~, ta sử dụng nhiều nhất ~3~ lần bình phương.
Bình luận
có ai giải được bài này bằng Java chưa ạ :(