16/09/2018, 23:38

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 ...

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 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
PHP
0