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

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

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

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

更新了最新的win11系統之後有不少的用戶不清楚該怎麼連接手柄進行遊戲,為此我們今天專給你們帶來了win11連接手柄詳細教程,如果你還沒有完成連接就來看看怎麼操作吧。 win11怎麼連接手把:1、點選下方的開始然後進入windows設定開啟「控制台」。 2.進入之後就可以找到「檢視裝置和印表機」進行進入。 3.此時你能夠看到手把設備的訊息,進行連接就行了。 4.連接成功之後出現一個√,就可以完成連接了。

為了確保您的網路連線正常運作或解決問題,有時您需要檢查Windows11上的網路連線詳細資訊。透過這樣做,您可以查看各種信息,包括您的IP位址、MAC位址、連結速度、驅動程式版本等,在本指南中,我們將向您展示如何做到這一點。如何在Windows11上找到網路連線詳細資訊? 1.使用「設定」應用程式按+鍵開啟Windows設定。 WindowsI接下來,導覽至左窗格中的網路和互聯網,然後選擇您的網路類型。在我們的例子中,這就是乙太網路。如果您使用的是無線網絡,請改為選擇Wi-Fi網路。在螢幕底部,您應該會看

很多時候我們都需要用電腦來連接印表機進行各種列印的操作,但有時候有些使用者會遇到win7無法連接印表機0x0000011b這種問題狀況,以下就是具體的因應解決方法。 win7無法連接印表機0x0000011b1、快捷鍵“win+r”,輸入“regedit”2、找到以下路徑“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print”3、右鍵新建值“DWORD(32位元)值(D)並且Set\Control\Print”3、右鍵新建值“DWORD(32位元)值(D)並且數值設定為0。將新建專案命名為“RpcAuthnLevelPri

keep體脂秤怎麼連接?keep是有專門設計的體脂秤,但是多數的用戶不知道如何連接keep的體脂秤,接下來就是小編為用戶帶來的keep體脂秤連接方法圖文教程,有興趣的用戶快來一起看看吧! keep體脂秤怎麼連接1、先打開keep軟體,進入到主頁點選右下角【我的】選擇其中的【智慧硬體】;2、然後在我的智慧型裝置頁面,中間【新增裝置】按鈕;3 、之後在選擇你要加入的設備介面,選擇【智慧體脂/體重計】;4、接著在選擇設備型號頁面,點選【keep體脂秤】選項;5、最後在下圖所示的介面,最底部的【立即添加】

大家在使用Edge瀏覽器訪問網頁的時候,有遇到提示你的連接不是專用連接,導致網頁瀏覽失敗的情況嗎?這是怎麼回事?很多朋友遇到這種問題都不知道該如何處理,可以看看下面三個解決方法。 方法一(簡單粗暴):在edge瀏覽器中,您可以透過進入設定並關閉安全性功能,然後在網站權限中阻止位置權限來嘗試解決原先報錯的網站無法存取的問題。需要注意的是,這種方法的有效性和持續時間可能會有所不同,無法確定特定的效果。重新啟動瀏覽器後,您可以嘗試造訪網站,看看是否有問題解決。 方法二: 調整鍵盤為英文輸

Win10連接網路受限解決方案隨著科技的快速發展,網路成為了人們生活中不可或缺的一部分。然而,有時我們在使用Windows10作業系統的電腦連接網路時可能會遇到一些問題,其中之一就是連接受限制。在這種情況下,我們無法正常存取網頁、下載檔案或使用網路功能。那麼,有什麼辦法能夠解決這個問題呢?本文將為您介紹幾種常見的解決方案。一、檢查網路連線設定首先,我

連接印表機0x0000011b是什麼意思在使用電腦、筆記型電腦或其他裝置時,使用者常常會遇到各種錯誤代碼。其中,0x0000011b是一種常見的印表機連線錯誤代碼。那麼,連接印表機0x0000011b到底是什麼意思呢?首先,我們需要了解一下印表機連接的基本原理。當我們需要從電腦列印文件時,通常需要將印表機連接到電腦上,以便二者之間進行資料傳輸。這種連接可以透過

Java中使用`Arrays.stream()`函數將陣列轉換為流,然後使用`min()`和`max()`函數來計算最小值和最大值。
