自幂数判断 - C++ 代码实现与示例
\u003cp\u003e\u003cstrong\u003e自幂数\u003c/strong\u003e是指, 一个 N 位数, 满足各位数字 N 次方之和是本身。例如, 153 是 3 位数, 其每位数的 3 次方之和, 1\u003csup\u003e3\u003c/sup\u003e + 5\u003csup\u003e3\u003c/sup\u003e + 3\u003csup\u003e3\u003c/sup\u003e = 153, 因此 153 是自幂数; 1634 是 4 位数, 其每位数的 4 次方之和, 1\u003csup\u003e4\u003c/sup\u003e + 6\u003csup\u003e4\u003c/sup\u003e + 3\u003csup\u003e4\u003c/sup\u003e + 4\u003csup\u003e4\u003c/sup\u003e = 1634, 因此 1634 是自幂数。\u003c/p\u003e\n\u003cp\u003e现在, 输入若干个正整数, 请判断它们是否是自幂数。\u003c/p\u003e\n\u003ch4\u003e输入描述\u003c/h4\u003e\n\u003cp\u003e输入第一行是一个正整数 M, 表示有 M 个待判断的正整数。约定 1≤M≤100 。\u003c/p\u003e\n\u003cp\u003e从第 2 行开始的 M 行, 每行一个待判断的正整数。约定这些正整数均小于 10\u003csup\u003e8\u003c/sup\u003e 。\u003c/p\u003e\n\u003ch4\u003e输出描述\u003c/h4\u003e\n\u003cp\u003e输出 M 行, 如果对应的待判断正整数为自幕数, 则输出英文大写字母 ’ T ’ , 否则输出英文大写字母’ F’。(cpp)\u003c/p\u003e\n\u003ch4\u003e样例输入\u003c/h4\u003e\n\u003cp\u003e3\u003c/p\u003e\n\u003cp\u003e153\u003c/p\u003e\n\u003cp\u003e1634\u003c/p\u003e\n\u003cp\u003e370\u003c/p\u003e\n\u003ch4\u003e样例输出\u003c/h4\u003e\n\u003cp\u003eT\u003c/p\u003e\n\u003cp\u003eT\u003c/p\u003e\n\u003cp\u003eF\u003c/p\u003e\n\u003ch4\u003e样例说明\u003c/h4\u003e\n\u003cp\u003e输入共有3个待判断的正整数,分别为153、1634和370。\u003c/p\u003e\n\u003cp\u003e其中,153是自幂数,输出T;\u003c/p\u003e\n\u003cp\u003e1634是自幂数,输出T;\u003c/p\u003e\n\u003cp\u003e370不是自幂数,输出F。\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp\u003e#include \u003ciostream\u003e\u003c/p\u003e\n\u003cp\u003eusing namespace std;\u003c/p\u003e\n\u003cp\u003eusing namespace std;\u003c/p\u003e\n\u003cp\u003ebool isArmstrong(int num) {\u003c/p\u003e\n\u003cp\u003e int originalNum = num;\u003c/p\u003e\n\u003cp\u003e int digitCount = 0;\u003c/p\u003e\n\u003cp\u003e int sum = 0;\u003c/p\u003e\n\u003cp\u003e while (num \u003e 0) {\u003c/p\u003e\n\u003cp\u003e digitCount++;\u003c/p\u003e\n\u003cp\u003e num /= 10;\u003c/p\u003e\n\u003cp\u003e }\u003c/p\u003e\n\u003cp\u003e num = originalNum;\u003c/p\u003e\n\u003cp\u003e while (num \u003e 0) {\u003c/p\u003e\n\u003cp\u003e int digit = num % 10;\u003c/p\u003e\n\u003cp\u003e sum += pow(digit, digitCount); // 计算每位数字的 N 次方之和\u003c/p\u003e\n\u003cp\u003e num /= 10;\u003c/p\u003e\n\u003cp\u003e }\u003c/p\u003e\n\u003cp\u003e return sum == originalNum; // 判断是否等于原数\u003c/p\u003e\n\u003cp\u003e}\u003c/p\u003e\n\u003cp\u003eint main() {\u003c/p\u003e\n\u003cp\u003e int M;\u003c/p\u003e\n\u003cp\u003e cin \u003e\u003e M;\u003c/p\u003e\n\u003cp\u003e for (int i = 0; i \u003c M; i++) {\u003c/p\u003e\n\u003cp\u003e int num;\u003c/p\u003e\n\u003cp\u003e cin \u003e\u003e num;\u003c/p\u003e\n\u003cp\u003e if (isArmstrong(num)) {\u003c/p\u003e\n\u003cp\u003e cout \u003c\u003c 'T' \u003c\u003c endl;\u003c/p\u003e\n\u003cp\u003e } else {\u003c/p\u003e\n\u003cp\u003e cout \u003c\u003c 'F' \u003c\u003c endl;\u003c/p\u003e\n\u003cp\u003e }\u003c/p\u003e\n\u003cp\u003e }\u003c/p\u003e\n\u003cp\u003e return 0;\u003c/p\u003e\n\u003cp\u003e}\u003c/p\u003e
原文地址: https://www.cveoy.top/t/topic/qoLI 著作权归作者所有。请勿转载和采集!