在这里我们将看到奥西里斯号。奥西里斯数是这样一种数字,其等于其自身数字的子样本的排列之和。假设这个数字是132,那么如果我们计算{12 + 21 + 13 + 31 + 23 + 32},这也是132。所以这个数字是奥西里斯数。我们必须检查给定的数字是否是奥西里斯数。
方法很简单。如果我们分析这些数字,每个数字都会出现两次,因此它们位于个位和十位。因此我们可以通过将它们乘以 11 来进行检查。
算法
isOsirisNumber(n) -
Begin
a := last digit
b := second digit
c := first digit
digit_sum := a + b + c
if n = (22 * digit_sum), then
return true
end if
return false
End
登录后复制
示例
#include
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