Nội dung chính
Đề bài
Viết chương trình PHP tìm các số thuận nghịch có 6 chữ số.
Một số được gọi là số thuận nghịch nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Ví dụ 123321 là một số thuận nghịch. Hãy liệt kê tất cả các số thuận nghịch có 4 chữ số.
Lời giải
- Sử dụng thuật toán.
- Chuyển số thành chuỗi, so sánh chuỗi đảo ngược với chuỗi ban đầu.
1. Sử dụng thuật toán
Kiểm tra các số đối nhau từ vị trí đầu tiên và từ vị trí cuối cùng vào số chình giữa.
<?php define ( "DEC_10", 10 ); /** * Kiểm tra số thuận nghịch * * @param n: số nguyên dương * @return true là số thuận nghịch * false không là số thuận nghịch */ function isThuanNghich($n) { // phân tích số n thành các chữ số và lưu vào $arrNumbers $arrNumbers = array (); $count = 0; do { $arrNumbers [$count] = $n % DEC_10; $count ++; $n = floor ( $n / DEC_10 ); } while ( $n > 0 ); // kiểm tra tính thuận nghịch $size = count ( $arrNumbers ); for($i = 0; $i < ($size / 2); $i ++) { if ($arrNumbers [$i] != $arrNumbers [$size - $i - 1]) { return false; } } return true; } // Kiểm tra số thuận nghịch $count = 0; // in ra màn hình các số thuận nghịch có 4 chữ số for($i = 1000; $i < 10000; $i ++) { if (isThuanNghich ( $i )) { echo ($i . "<br>"); $count ++; } } echo ("Tổng các số thuận nghịch có 6 chữ số: $count"); ?>
Kết quả:
1001 1111 1221 1331 1441 ... 9559 9669 9779 9889 9999 Tổng các số thuận nghịch có 6 chữ số: 90
2. Chuyển số thành chuỗi, so sánh chuỗi đảo ngược với chuỗi ban đầu
Chuyển đổi số đã cho thành chuỗi, đảo ngược chuỗi thành chuỗi nghịch đảo, nếu 2 chuỗi bằng nhau thì số đã cho là số thuận nghịch.
<?php /** * Kiểm tra số thuận nghịch * * @param n: số nguyên dương * @return true là số thuận nghịch * false không là số thuận nghịch */ function isThuanNghich($n) { // sử dụng hàm strrev() đảo ngược số n $m = strrev($n); // so sanh nếu n với m if (strcmp($n, $m) == 0) { return true; } return false; } // Kiểm tra số thuận nghịch $count = 0; // in ra màn hình các số thuận nghịch có 4 chữ số for($i = 1000; $i < 10000; $i ++) { if (isThuanNghich ( $i )) { echo ($i . "<br>"); $count ++; } } echo ("Tổng các số thuận nghịch có 6 chữ số: $count"); ?>
Kết quả:
1001 1111 1221 1331 1441 ... 9559 9669 9779 9889 9999 Tổng các số thuận nghịch có 6 chữ số: 90