Một số nguyên dương được gọi là đối xứng nếu chữ số thứ nhất bằng chữ số cuối, chữ số thứ hai bằng chữ số gần cuối Cho 2 số nguyên dương m và n (m #include int daoso(int n); | Liệt kê các số đối xứng Một số nguyên dương được gọi là đối xứng nếu chữ số thứ nhất bằng chữ số cuối chữ số thứ hai bằng chữ số gần cuối. Cho 2 số nguyên dương m và n m n và liệt kê các số đối xứng nằm giữa m và n. Chúng ta có thể lần lượt kiểm tra tính đối xứng của các số từ m đến n bằng cách đảo ngược số đang xét một số là đối xứng nếu đảo lại vẫn bằng chính nó. include stdio. h include conio. h int daoso int n main int m n i printf TIM SO DOI XUNG n printf moi ban nhap so m scanf d m printf moi ban nhap so n m scanf d n if n m printf nhap n m mat roi else for i m i n i if daoso i i printf d i getch int daoso int n int x s 0 while n 0 x n 10 n 10 s s 10 x return s Thuật toán trên hết sức đơn giản thực hiện tốt với n-m nhỏ. Nếu n rất lớn hàng tỉ chẳng hạn thì thuật toán trên tỏ ra không hiệu quả. Thay vào đó ta sẽ tạo ra các số đối xứng có từ Lm đến Ln chữ số với Lm là số chữ số của m và Ln là số chữ số của n rồi so sánh các số đối xứng đó với m và n. Thuật toán này cho phép liệt kê tất cả các số đối xứng từ 0 đến trong giới hạn thời gian 1 giây. include iostream include fstream include using namespace std int str2int char s int ret 0 for int i 0 s i i ret 10 ret s i - 0 return ret int len int n int r 0