目录
示例
方法2
算法
输出
结论
首页 后端开发 C++ 检查将数组元素连接形成的数字是否为哈希德数

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

Aug 25, 2023 pm 08:17 PM
连接 数组元素 哈希德数

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

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

在我们继续解决方案之前,让我们先了解一下哈尔沙德数。所有的数都是哈尔沙德数,它们可以被它们的数字之和整除。例如,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 <iostream>
#include <vector>
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<int> 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<int> arr{1, 35, 69, 60};
   if (isHarshadNumber(arr))
      cout << "Yes, the number formed by concatenating the array element is a Harshad number";
   else
      cout << "No, the number formed by concatenating the array element is not a Harshad number";
   return 0;
}
登录后复制

输出

Yes, the number formed by concatenating the array element is a Harshad number
登录后复制

时间复杂度 - O(N),因为我们遍历字符串。

空间复杂度 - O(1),因为我们不使用额外的空间。

方法2

在这种方法中,我们将对组合整数的每个小块执行模运算,并检查大整数是否能被其和整除。

算法

  • 定义“组合”字符串变量。

  • 迭代整数数组,将所有整数组合并存储到‘combined’变量中。

  • 将数字之和存储在“sum”变量中

  • 使用循环遍历“组合”字符串。

  • 定义‘current’变量并初始化为零

  • 将‘current’变量乘以10,并加上当前的数字值。然后,将结果值存储在‘current’变量中。

  • 对‘current’和sum进行模运算。

  • 当循环的所有迭代完成时,如果“当前”变量的值为零,则返回 true。如果当前变量的值不为零,则返回 false。

示例

#include <iostream>
#include <vector>
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<int> 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 the sum of digits
   for (int i = 0; i < combined.length(); i++)
      sum += (combined[i] - '0');
   // to store the current integer
   int current = 0;
   for (int i = 0; i < combined.size(); i++) {
      // Calculate the current integer by multiplying 10 and adding the current digit
      current = current * 10 + (combined[i] - '0');
      // Check if the current integer is divisible by the sum
      current %= sum;
   }
   return current == 0;
}
int main(){
   // Input
   vector<int> arr{1, 35, 69, 0};
   if (isHarshadNumber(arr))
      cout << "Yes, the number formed by concatenating the array element is a Harshad number";
   else
      cout << "No, the number formed by concatenating the array element is not a Harshad number";
   return 0;
}
登录后复制

输出

No, the number formed by concatenating the array element is not a Harshad number
登录后复制

时间复杂度 - O(N)

空间复杂度 - O(1)

结论

我们学习了两种不同的方法来解决问题。第一种方法仅在数组包含较少元素时使用,因为 stoi() 方法在将字符串转换为整数时有一些限制。第二种方法是通用的,可以用于N个数组元素。

以上是检查将数组元素连接形成的数字是否为哈希德数的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Win11游戏手柄连接完整指南 Win11游戏手柄连接完整指南 Jan 02, 2024 pm 05:26 PM

更新了最新的win11系统之后有不少的用户不清楚该怎么连接手柄进行游戏,为此我们今天专给你们带来了win11连接手柄详细教程,如果你还没有完成连接就来看看怎么操作吧。win11怎么连接手柄:1、点击下方的开始然后进入windows设置开启“控制面板”。2、进入之后就可以找到“查看设备和打印机”进行进入。3、此时你能够看到手柄设备的信息,进行连接就行了。4、连接成功之后出现一个√,就可以完成连接了。

win7打印机无法连接的错误代码0x0000011b win7打印机无法连接的错误代码0x0000011b Dec 26, 2023 pm 10:01 PM

很多时候我们都需要用电脑来连接打印机进行各种打印的操作,但是有时候一些用户会遇到win7无法连接打印机0x0000011b这种问题情况,下面就是具体的应对解决方法。win7无法连接打印机0x0000011b1、快捷键“win+r”,输入“regedit”2、找到以下路径“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print”3、右键新建值“DWORD(32位)值(D)并且数值设置为0。将新建项目命名为“RpcAuthnLevelPri

如何在 Windows 11 上检查网络连接详细信息和状态 如何在 Windows 11 上检查网络连接详细信息和状态 Sep 11, 2023 pm 02:17 PM

为了确保您的网络连接正常工作或解决问题,有时您需要检查Windows11上的网络连接详细信息。通过这样做,您可以查看各种信息,包括您的IP地址、MAC地址、链接速度、驱动程序版本等,在本指南中,我们将向您展示如何做到这一点。如何在Windows11上查找网络连接详细信息?1.使用“设置”应用按+键打开Windows设置。WindowsI接下来,导航到左窗格中的网络和互联网,然后选择您的网络类型。在我们的例子中,这就是以太网。如果您使用的是无线网络,请改为选择Wi-Fi网络。在屏幕底部,您应该会看

keep体脂秤怎么连接 keep体脂秤怎么连接 Mar 07, 2024 pm 04:50 PM

keep体脂秤怎么连接?keep是有专门设计的体脂秤,但是多数的用户不知道如何连接keep的体脂秤,接下来就是小编为用户带来的keep体脂秤连接方法图文教程,感兴趣的用户快来一起看看吧!keep体脂秤怎么连接1、首先打开keep软件,进入到主页面点击右下角【我的】选择其中的【智能硬件】;2、然后在我的智能设备页面,中间【添加设备】按钮;3、之后在选择你要添加的设备界面,选择【智能体脂/体重秤】;4、接着在选择设备型号页面,点击【keep体脂秤】选项;5、最后在下图所示的界面,最底部的【立即添加】

打印机错误代码0x0000011b的含义 打印机错误代码0x0000011b的含义 Feb 18, 2024 pm 10:02 PM

连接打印机0x0000011b是什么意思在使用电脑、笔记本或者其他设备时,用户常常会遇到各种错误代码。其中,0x0000011b是一种常见的打印机连接错误代码。那么,连接打印机0x0000011b到底是什么意思呢?首先,我们需要了解一下打印机连接的基本原理。当我们需要从电脑上打印文件时,通常需要将打印机连接到电脑上,以便二者之间进行数据传输。这种连接可以通过

共享打印机无法连接到打印机 共享打印机无法连接到打印机 Feb 22, 2024 pm 01:09 PM

随着数字化时代的发展,共享打印机成为现代办公环境中不可或缺的一部分。然而,有时我们可能会遇到共享打印机无法连接到打印机的问题,这不仅会影响工作效率,还会带来一系列麻烦。本文旨在探讨共享打印机无法连接到打印机的原因和解决方法。共享打印机无法连接到打印机的原因有很多,其中最常见的原因是网络问题。如果共享打印机与打印机之间的网络连接不稳定或中断,那么就无法进行正常

解决Windows 10网络连接受限的方法 解决Windows 10网络连接受限的方法 Feb 19, 2024 pm 09:20 PM

Win10连接网络受限制解决办法随着科技的快速发展,网络已经成为了人们生活中不可或缺的一部分。然而,有时我们在使用Windows10操作系统的电脑连接网络时可能会遇到一些问题,其中之一就是连接受限制。这种情况下,我们无法正常访问网页、下载文件或者使用网络功能。那么,有什么办法能够解决这个问题呢?本文将为您介绍几种常见的解决办法。一、检查网络连接设置首先,我

一加手表怎么连接蓝牙耳机_一加手表连接蓝牙耳机的方法 一加手表怎么连接蓝牙耳机_一加手表连接蓝牙耳机的方法 Mar 23, 2024 pm 01:16 PM

1、将耳机放在耳机盒中并保持盖子打开,长按盒子上的按键使耳机进入进入配对状态。2、打开手表音乐功能并选择蓝牙耳机,或在手表设置功能选择蓝牙耳机。3、在手表选择该耳机即可配对成功。

See all articles