Số Osiris là số bằng tổng các hoán vị của các mẫu con của các chữ số của nó. Ví dụ 132: {12 + 21 + 13 + 31 + 23 + 32} = 132. Kiểm tra số cho trước có phải Osiris không.
Cách tiếp cận: mỗi chữ số xuất hiện 2 lần (hàng đơn vị và hàng chục). Ta kiểm tra bằng cách nhân 11 với tổng các chữ số.
Thuật toán
isOsirisNumber(n) -
Bắt đầu
a := chữ số cuối
b := chữ số giữa
c := chữ số đầu
digit_sum := a + b + c
nếu n = (22 * digit_sum), thì
trả về true
kết thúc nếu
trả về false
Kết thúc
Ví dụ
#include <iostream>
using namespace std;
bool isOsirisNumber(int n) {
int a = n % 10;
int b = (n / 10) % 10;
int c = n / 100;
int sum = a + b + c;
if (n == (22 * sum)) {
return true;
}
return false;
}
int main() {
int n = 132;
if (isOsirisNumber(n))
cout << "This is Osiris number";
else
cout << "This is Not Osiris number";
}
Kết quả
This is Osiris number