检查将数组元素连接形成的数字是否为哈希德数

2023年 8月 27日 37.3k 0

检查将数组元素连接形成的数字是否为哈希德数

在这个问题中,我们给出了整数数组。我们需要将所有元素组合成一个整数并检查它是否是哈沙德数。

在我们继续解决方案之前,让我们先了解一下哈尔沙德数。所有的数都是哈尔沙德数,它们可以被它们的数字之和整除。例如,12是哈尔沙德数,因为12可以被3整除,而3是1+2的和。

为了解决这个问题,我们可以将所有的数组元素相加,然后检查结果是否是一个Harshad数。

问题陈述——我们给出了一个整数数组。我们需要将所有元素组合成一个数字,并检查组合数字是否为哈沙德数。

示例

输入– arr = {1, 35, 69, 60};

输出-是

解释 - 结果数字 1356960 可以被它的和整除。

输入  –  arr = {1, 65, 78 , 1}

输出 – 否

说明 – 合并后的数字 165781 不能被 28 整除。

输入 – arr = {1, 44}

输出-是

解释——144 能被 9 整除。

方法 1

这种方法将所有数组元素合并为一个字符串。然后,我们将使用stoi()方法将合并的字符串转换为整数。之后,我们可以使用模运算符来检查数字是否可以被其各位数字之和整除。

算法

  • 定义“组合”字符串变量并使用空字符串对其进行初始化。

  • 迭代整数数组。使用 to_string() 方法将数字转换为字符串。之后,将其附加到“组合”变量中。

  • 定义变量‘sum’并将其初始化为零,用于存储数字的总和。

  • 遍历组合字符串,并存储每个数字的总和。

  • 使用stoi()方法将组合的字符串转换为整数。之后,对整数进行取模运算,并根据结果返回一个布尔值。

示例

#include
#include
using namespace std;

// function to check whether the number formed by concatenating the elements of the array is a Harshad number or not
bool isHarshadNumber(vector array){
// store the concatenated number
string combined = "";
// Iterate over the array
for (auto num : array){
// Concatenate the string
combined += to_string(num);
}
// Stores the sum of digits
int sum = 0;
// Calculate sum of digits
for (int i = 0; i < combined.length(); i++)
sum += (combined[i] - '0');
// Check if n is divisible by the sum
return stoi(combined) % sum == 0;
}
int main(){
// Input
vector arr{1, 35, 69, 60};
if (isHarshadNumber(arr))
cout

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论