首页 > 后端开发 > C++ > 用C++编写的由M个数字组成的N位数中能被5整除的数字

用C++编写的由M个数字组成的N位数中能被5整除的数字

PHPz
发布: 2023-09-02 16:25:06
转载
994 人浏览过

用C++编写的由M个数字组成的N位数中能被5整除的数字

我们给出了一个数字 N 以及一个由 M 位数字组成的数组。我们的工作是找到n个数 由给定的 M 位数字组成的可被 5 整除的数字。

让我们看一些示例来理解问题的输入和输出。

In -

N = 2
M = 3
arr = {5, 6, 3}
登录后复制

出局 -

2
登录后复制
登录后复制

有 2 N 个数字 35 和 65 可能被 5 整除。让我们看另一个例子。

输入 -

N = 1
M = 7
arr = {2, 3, 4, 5, 6, 7, 8}
登录后复制

输出-

1
登录后复制

给定数组中只有 1 个 1 位数字可以被 5 整除。因此,我们的任务是找到给定的 N 个数字可以被 5 整除的数字的个数。< /p>

数字必须以数字 0 或 5 结尾才能被 5 整除。让我们看看算法

算法

  • 检查对于给定数组中的 0 和 5。 2. 如果同时存在 0 和 5,则有两种方法将数字放入个位。否则,将有一种放置数字的方法。
    • 将计数初始化为 2。
    • 现在,剩余的位置可以有 m - 1、m - 2, m - 3, ... n 种分别填充它们的方法。
    • 编写一个从 0 迭代到 n - 1 的循环。
      • 减少数组。
      • 将其与计数相乘。
  • 如果有单个数字 0 或 5,则有只有一种方法可以将数字放入个位。
    • 将计数初始化为 2。
    • 现在,剩余的位置可以有 m - 1、m - 2 , m - 3, ... n 种分别填充它们的方法。
    • 编写一个从 0 迭代到 n - 1 的循环。
      • 减少数组。
      • 将其与计数相乘。
  • 如果没有数字 0 或 5,则我们可以形成一个能被5整除的数字。此时返回-1。

实现

以下是上述算法的C++实现

#include <bits/stdc++.h>

using namespace std;

int numbers(int n, int m, int arr[]) {
   bool isZeroPresent = false, isFivePresent = false;
   int numbersCount = 0;
   if (m < n) {
      return -1;
   }
   for (int i = 0; i < m; i++) {
      if (arr[i] == 0) {
         isZeroPresent = true;
      }
      if (arr[i] == 5) {
         isFivePresent = true;
      }
   }
   if (isZeroPresent && isFivePresent) {
      numbersCount = 2;
      for (int i = 0; i < n - 1; i++) {
         m--;
         numbersCount = numbersCount * m;
      }
   } else if (isZeroPresent || isFivePresent) {
      numbersCount = 1;
      for (int i = 0; i < n - 1; i++) {
         m--;
         numbersCount = numbersCount * m;
      }
   } else {
      return -1;
   }
   return numbersCount;
}
int main() {
   int arr[] = {5, 6, 3};
   cout << numbers(2, 3, arr) << endl;
   return 0;
}
登录后复制

输出

如果运行上面的代码,您将得到以下结果。

2
登录后复制
登录后复制

以上是用C++编写的由M个数字组成的N位数中能被5整除的数字的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板