C++ 程序:查找给定区间内的特立独行的幸福数
你好,请问你需要什么帮助呢?\n\n## C++ 程序:查找给定区间内的特立独行的幸福数\n\n本程序使用 C++ 语言编写,旨在找出给定区间内所有特立独行的幸福数,并计算其独立性。幸福数指的是一个可以通过若干次迭代得到 1 的数字,特立独行的幸福数则指在一个有限区间内不依附于任何其他数字的幸福数。程序接收两个整数作为输入,表示区间的起点和终点,并输出区间内所有特立独行的幸福数及其独立性。\n\n算法原理:\n\n1. 幸福数判断: 对于给定数字,进行迭代计算,每次迭代将数字的各位数字平方后求和,直到得到 1 或陷入死循环。\n2. 特立独行判断: 对于区间内的每个数字,判断其是否为幸福数,并记录其迭代过程中出现的数字。如果该数字及其迭代过程中出现的数字都没有出现在区间内的其他数字的迭代过程中,则该数字为特立独行的幸福数。\n3. 独立性计算: 特立独行幸福数的独立性由它及其依附于它的幸福数的个数决定。\n\n程序代码:\n\nc++\n#include <iostream>\n#include <set>\n#include <cmath>\n\nusing namespace std;\n\n// 计算一个数字的各位数字平方和\nint sumOfSquares(int num) {\n int sum = 0;\n while (num > 0) {\n int digit = num % 10;\n sum += digit * digit;\n num /= 10;\n }\n return sum;\n}\n\n// 判断一个数字是否为幸福数\nbool isHappyNumber(int num) {\n set<int> seenNumbers; \n while (num != 1 && seenNumbers.find(num) == seenNumbers.end()) {\n seenNumbers.insert(num);\n num = sumOfSquares(num);\n }\n return num == 1;\n}\n\n// 计算一个幸福数的独立性\nint calculateIndependence(int num, int start, int end) {\n int independence = 1; // 初始化独立性为 1 (包含自身)\n set<int> seenNumbers; \n seenNumbers.insert(num); // 添加自身\n while (num != 1) {\n num = sumOfSquares(num);\n if (num >= start && num <= end && seenNumbers.find(num) == seenNumbers.end()) {\n seenNumbers.insert(num); \n independence++;\n }\n }\n return independence;\n}\n\nint main() {\n int start, end;\n cin >> start >> end;\n\n bool foundHappyNumber = false; \n for (int i = start; i <= end; i++) {\n if (isHappyNumber(i)) {\n int independence = calculateIndependence(i, start, end);\n cout << i << " " << independence << endl;\n foundHappyNumber = true;\n }\n }\n\n if (!foundHappyNumber) {\n cout << "SAD" << endl;\n }\n\n return 0;\n}\n\n\n输入格式:\n\n输入在第一行给出闭区间的两个端点:1<A<B≤10^4。\n\n输出格式:\n\n按递增顺序列出给定闭区间 [A,B] 内的所有特立独行的幸福数和它的独立性。每对数字占一行,数字间以 1 个空格分隔。\n\n如果区间内没有幸福数,则在一行中输出 SAD。\n\n输入样例 1:\n\n10 40\n\n输出样例 1:\n\n19 8\n23 6\n28 3\n31 4\n32 3\n\n注意: 样例中,10、13 也都是幸福数,但它们分别依附于其他数字(如 23、31 等等),所以不输出。其它数字虽然其实也依附于其它幸福数,但因为那些数字不在给定区间 [10, 40] 内,所以它们在给定区间内是特立独行的幸福数。\n\n输入样例 2:\n\n110 120\n\n输出样例 2:\n\nSAD
原文地址: https://www.cveoy.top/t/topic/pCAx 著作权归作者所有。请勿转载和采集!