Tìm số thuận nghịch trong PHP
PHP Đề bài : 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 Cách 1 : Đảo ngược số đã cho thành ...
Đề bài: 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
Cách 1: Đảo ngược số đã cho thành số nghịch đảo của số ban đầu, nếu 2 số bằng nhau thì số đã cho là số thuận nghịch.
<?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
Cách 2: 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