Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
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, Python, Ruby, Rust, Scratch, Swift
Kiểm tra xem 1 số ~ n ~ có thể viết thành tổng của 1 hoặc nhiều các số trong dãy sau: ~ 11,111,1111,11111,... ~ (mỗi số có thể dùng nhiều lần hoặc không dùng).
Ví dụ như ~ 33= 11+11+11, 222=111+111 ~ thì ~33,222~ có thể viết được.
Input
Gồm số tự nhiên ~n~ duy nhất ( ~ 1 \le n \le 10^{18} ~ ).
Output
In ra YES nó số đó viết được, in ra NO nếu số đó không viêt được
Sample
Input #1
33
Output #1
YES
Hint
Nhớ kĩ YES và NO viết hoa tất cả chữ cái nha!!!
Bình luận
Tất cả các số lớn hơn 111 mà toàn chữ số "1", đều có thể biểu diễn = 2 số 111, 11:
1111 = 11 * 100 + 11
11111 = 111 * 100 + 11
111111 = 111 * 1000 + 111
1111111 = 111 * 10000 + 11 * 100 + 11
...
Như vậy nếu 1 số n được tạo thành từ tổng các số chứa toán chữ số "1", chắc chắn có thể biểu diễn thành tổng của các chữ số 111 và 11. Ví dụ: 144 = 111 + 3 * 11.
Vậy ta có phương trình: x * 11 + y * 111 = n <=> x = (n - y * 111) / 11. Việc cần làm tiếp theo là đi tìm cặp nghiệm (x, y) nguyên dương thoả mãn.
ai có ý tưởng ko cho mik cin:))
ý tưởng nằm ở 2 con số đầu tiên của dãy nha bạn