在這個問題中,我們給了整數陣列。我們需要將所有元素組合成一個整數並檢查它是否是哈沙德數。
在我們繼續解決方案之前,讓我們先了解哈爾沙德數。所有的數都是哈爾沙德數,它們可以被它們的數字總和整除。例如,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中文網其他相關文章!

win11无法连接局域网打印机怎么办?有不少用户的win11系统在使用局域网打印机功能的时候,无法正常连接到共享打印机,出现这个问题,可能是连接步骤或者是某项功能服务没打开。今天小编就给大家带来了多种解决方法,很多小伙伴不知道怎么详细操作,小编下面整理了win11电脑不能连共享打印机解决技巧,如果你感兴趣的话,跟着小编一起往下看看吧!win11电脑不能连共享打印机解决技巧1、首先,按键盘上的Win+X组合键,或右键点击任务栏上的Windows开始图标,在打开的隐藏菜单项中,选择运行;2、运行窗口

MariaDB是一种开源的关系型数据库管理系统,它是MySQL的一个分支。PHP作为一种开源的服务器端脚本语言,被广泛应用于Web开发中。在很多Web开发项目中,需要使用PHP连接到MariaDB数据库,以便在Web应用程序中存储和检索数据。这篇文章将介绍如何使用PHP编写代码来连接MariaDB数据库。一、安装MariaDB服务器在使用PHP连接Maria

随着现代程序开发的不断发展,软件项目往往需要同时使用多个任务库来处理不同的任务。PHP语言一直是Web开发的重要工具,其在7.0版本中引入了新的并发处理特性,使得PHP在处理任务库时更加高效、灵活。在8.0版本中,PHP又新增了对连接多个任务库的支持,这为我们在处理大量数据和并发请求时提供了极大的便利。在本文中,我们将探讨PHP8.0中连接多个任务库的方法和

Python连接阿里云接口,实现邮件发送功能阿里云提供了一系列的服务接口,其中包括了邮件发送服务。通过Python脚本连接阿里云接口,我们可以实现邮件的快速发送。本篇文章将向您展示如何使用Python脚本连接阿里云接口,并实现邮件发送功能。首先,我们需要在阿里云上申请邮件发送服务,获取相应的接口信息。在阿里云管理控制台中,选择邮件推送服务,然后创建一个新的邮

MySQL连接错误1203,如何解决?MySQL是一种广泛使用的关系型数据库管理系统,但是在使用MySQL时,一些连接错误可能会出现。其中一个常见的错误是错误代码1203,它表示数据库连接已中断。在遇到这个错误时,可以采取一些措施来解决问题。首先,我们需要确定错误1203的确切原因。这个错误通常是由于连接超时或连接过多引起的。连接超时可能是由于数据库服务器负

如何在Java程序中优化MySQL连接的写入性能和并发性能?在开发Java程序时,我们经常需要使用到数据库,而MySQL作为一种常见的数据库管理系统,其连接的写入性能和并发性能是我们需要关注的重点。本文将介绍如何在Java程序中优化MySQL连接的写入性能和并发性能,以提升程序的效率。使用连接池管理连接:连接池可以管理数据库连接的创建、销毁和复用,避免频繁地

MySQL连接错误1062,如何解决?MySQL是一种常用的关系型数据库管理系统,广泛应用于各种软件开发和数据存储场景中。在使用MySQL的过程中,我们有时会遇到各种错误,其中一个常见的错误是连接错误1062。本文将介绍这个错误的原因以及解决方法。首先,我们需要了解连接错误1062的含义。连接错误1062通常意味着在执行插入操作时,违反了表的唯一约束条件。在

Java连接数据库的SQLException异常常见原因是什么?在Java开发中,Database操作是非常关键的一环。其中,对于常用的CRUD操作,特别是SELECT和INSERT操作,都需要使用到JDBC来实现。但是,在JDBC应用开发中,与数据库的连接操作、SQL语言的执行过程、以及结果集的处理等阶段,可能会发生SQLException异常。本文将分析


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)