19/11/2018, 19:41

Tìm số thuận nghịch trong C++

Học lập trình C++ Đề 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ó 6 chữa số. Lời giải Cách 1 : Duyệt các ...

Học lập trình C++

Đề 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ó 6 chữa số.

Lời giải

Cách 1: Duyệt các số từ 100000 đến 999999, rồi phân tách số hiện tại thành các chữ số đơn lẻ để kiểm tra tính thuận nghịch.

/**
 * Chuong trình liet ke tat ca cac so thuan nghich co 6 chu so
 * 
 * @author viettuts.vn
 */
#include <iostream>

using namespace std;
    
const int DEC_10 = 10;

/**
 * kiem tra so thuan nghich
 * 
 * @param n: so nguyen duong
 * @return 1: la so thuan nghich
 *         0: khong la so thuan nghich
 */
int isThuanNghich(int n) {
    int a[20];
    int dem = 0, i;
    // phan tich n thanh mang cac chu so
    do {
        a[dem++] = (n % DEC_10);
        n = n / DEC_10;
    } while (n > 0);
    // kiem tra tinh thuan nghich
    for (i = 0; i < (dem/2); i++) {
        if (a[i] != a[(dem - i - 1)]) {
            return 0;
        }
    }
    return 1;
}

/**
 * main
 * 
 * @param args
 */
int main() {
    int count = 0, i;
    // in ra man hinh cac so thuan nghich co 6 chu so
    for (i = 100000; i < 1000000; i++) {
        if (isThuanNghich(i)) {
            printf("%d
", i);
            count++;
        }
    }
    printf("Tong cac so thuan nghich co 6 chu so la: %d", count);
}

Kết quả:

100001
101101
102201
...
997799
998899
999999
Tong cac so thuan nghich co 6 chu so la: 900
Học lập trình C++
0