21xrx.com
2024-11-10 00:45:22 Sunday
登录
文章检索 我的文章 写文章
求解C++中n位的水仙花数
2023-06-30 07:51:57 深夜i     --     --
C++ 水仙花数 n位 求解

水仙花数是指一个n位数,它的各个位上的数字的n次方之和等于它本身。例如,153是一个水仙花数,因为1的三次方加上5的三次方加上3的三次方等于153。在C++中,我们可以通过编写程序来求解n位的水仙花数。

为了求解n位的水仙花数,我们需要首先了解如何判断一个数是不是水仙花数。一个数的各个位上的数字可以通过将其除以10的余数来获取,因此我们可以使用一个循环来遍历该数的各个位。对于每个位上的数字,我们可以将它的n次方叠加到一个总和中,最后将总和与这个数比较来判断它是否是水仙花数。

针对n位数的情况,我们可以使用两个循环来遍历所有的n位数。外层循环从10^(n - 1)开始,内层循环从0开始,每次增加1。这样,我们就可以遍历所有的n位数,并且通过判断它们是不是水仙花数来得到我们想要的结果。

以下是用C++编写的求解n位水仙花数的程序:


#include <iostream>

#include <cmath>

using namespace std;

int main() {

  int n;

  cout << "请输入位数n:";

  cin >> n;

  int min_num = pow(10, n - 1); // 最小的n位数

  int max_num = pow(10, n) - 1; // 最大的n位数

  for (int i = min_num; i <= max_num; i++) {

    int sum = 0;

    int temp = i;

    while (temp != 0) {

      int digit = temp % 10;

      sum += pow(digit, n);

      temp = temp / 10;

    }

    if (sum == i)

      cout << i << " ";

    

  }

  return 0;

}

在程序中,我们首先需要用户输入要求解的水仙花数的位数n。然后,我们计算出最小的n位数和最大的n位数。接着,我们针对每个n位数,使用上述的循环和判断方法来判断它是不是水仙花数。如果是,我们就将它输出。最后,程序结束。

总体来说,求解C++中n位的水仙花数是一道不错的编程练习题,可以帮助我们熟练掌握循环和判断语句的使用,进而提高我们的编程能力。

  
  
下一篇: C++容器详解

评论区

{{item['qq_nickname']}}
()
回复
回复