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

用c++编写的由m个数字组成的n位数中能被5整除的数字

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

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

In –

N = 2M = 3arr = {5, 6, 3}

出局 –

2

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

输入 –

立即学习“C++免费学习笔记(深入)”;

N = 1M = 7arr = {2, 3, 4, 5, 6, 7, 8}

输出-

1

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

数字必须以数字 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 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整除的数字的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:18:32
下一篇 2025年12月8日 02:44:24

相关推荐

发表回复

登录后才能评论
关注微信