21xrx.com
2024-09-20 05:38:28 Friday
登录
文章检索 我的文章 写文章
C++ 求解水仙花数 MN
2023-07-04 21:42:42 深夜i     --     --
C++ 求解 水仙花数 M N

水仙花数,又叫自恋数,是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3。

在C++语言中,我们可以用循环和条件语句求解水仙花数。首先,我们需要输入一个MN,表示需要求解M到N范围内的水仙花数。然后,我们可以通过循环,依次判断范围内的数是否为水仙花数,并将符合条件的数输出。

具体来说,我们可以先定义一个函数isNarcissisticNumber(int n),用于判断一个数n是否为水仙花数。在函数中,我们可以先将n转化为字符串,然后遍历字符串的每个字符,将每个字符的n次幂累加起来,最后与原数做比较即可。

接下来,我们可以在主函数中输入需要求解的范围M和N,然后通过循环依次判断M到N范围内的每个数是否为水仙花数,如果是,则输出该数。最后,我们可以输出所有水仙花数的个数,以及它们的总和。

下面是一个求解水仙花数的C++代码示例:


#include <iostream>

#include <string>

#include <cmath>

using namespace std;

bool isNarcissisticNumber(int n) {

  string str = to_string(n);

  int sum = 0;

  for (int i = 0; i < str.length(); i++) {

    sum += pow(str[i] - '0', str.length());

  }

  return sum == n;

}

int main() {

  int M, N;

  cout << "请输入范围M和N:" << endl;

  cin >> M >> N;

  int count = 0;

  int sum = 0;

  for (int i = M; i <= N; i++) {

    if (isNarcissisticNumber(i)) {

      cout << i << endl;

      count++;

      sum += i;

    }

  }

  cout << "水仙花数的个数为:" << count << endl;

  cout << "水仙花数的总和为:" << sum << endl;

  return 0;

}

通过以上代码,我们可以方便地求解水仙花数,并输出结果。同时,也可以通过修改代码,求解其他类似的数学问题。这充分说明了C++的强大功能和灵活性。

  
  

评论区

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