编程中的“神奇数字”通常指的是具有特定性质或规律的数字。以下是一些与“神奇数字”相关的编程题目和代码示例:
MagicNumber
题目描述:如果一个数(可能包含前导0)乘以2后,结果仍然由相同的数字组成,则称该数为MagicNumber。
输入:多组测试数据,每组一行,每行是一个不大于1e10000的整数(可能有前导0),遇到EOF标志结束程序。
输出:判断输入的数是否为MagicNumber,是则输出“MagicNumber”,否则输出“NotMagicNumber”。
示例输入:142857 0 142857 857 1420588235294117647
示例输出:MagicNumber MagicNumber MagicNumber MagicNumber
代码示例(C++):
```cpp
include include define MAX 10001 typedef struct { int date[MAX]; } intdate; int main() { int n; while (cin >> n) { if (n == 0) break; bool isMagic = true; for (int i = 0; i < n; ++i) { int original = n % 10; n /= 10; if ((n % 10) * 2 != original) { isMagic = false; break; } } if (isMagic) { cout << "MagicNumber" << endl; } else { cout << "NotMagicNumber" << endl; } } return 0; } ``` 题目描述:将一个数字的偶数位和奇数位分别提取出来,然后交换位置,得到一个新的数字。 输入:一个字符串表示的数字。 输出:一个新的字符串表示的数字。 代码示例(C++): ```cpp include include include std::string change(std::string number) { std::string a = number; std::stack int left = 0; int right = a.size() - 1; while (right >= left) { if (a[left] % 2 == 0) { b.push(a[left]); } left++; } left = 0; while (right >= left) { if (a[left] % 2 == 0) { a[left] = b.top(); b.pop(); } left++; } return a; } int main() { std::string number; std::cin >> number; std::string result = change(number); std::cout << result << std::endl; return 0; } ``` 题目描述:找到一个数字,其平方和立方正好包含0到9的所有数字。 代码示例(C++):数字转换
奇妙数字