目錄
#問題陳述
範例
解決方案
範例:C 程式
输出
时间和空间复杂度分析
时间复杂度:O(n!)
空间复杂度:O(n!)
结论
首頁 後端開發 C++ 回文自拍數

回文自拍數

Sep 09, 2023 pm 08:37 PM
自拍 回文 數位

回文自拍數

如果一個數字可以只使用自己的數字和某些數學運算來表示,則該數字被視為「自拍數字」。

例如,936是一個自拍號碼。

$$\mathrm{936\:=\:(\sqrt{9})!^{3}\: \:6!\:=\:216\: \:720\:=\:第936章

這裡可以看到,原數的數字做了一系列運算,結果與原數相等。

回文自拍號碼是一種特殊的自拍號碼。他們符合自拍乘法規則。

  • 考慮一個數字 x。

  • 設 x 的數字反轉後的數為 $\mathrm{x^\prime}$。

  • 令 y 為由 x 的數字以不同順序組成的數字。

  • 設 y 的數字反轉後的數為 $\mathrm{y^\prime}$。

回文自拍數滿足以下方程式 -

$$\mathrm{x\:×\:x^\prime\:=\:y\:×\:y^\prime}$$

#問題陳述

對於給定的數字x,依照自拍乘法法則求其回文自拍數。

範例

Input: 1224
Output: 2142
登入後複製

說明 -

給定 x = 1224

所以 $\mathrm{x^\prime}$ = 4221 是將 x 的數字反轉得到

令 y = 2142。 y 是使用 x 的數字以不同順序形成的

所以 $\mathrm{y^\prime}$ = 2412 是將 y 的數字反轉得到的

$\mathrm{x\:×\:x^\prime}$ = 1224 × 4221 = 5166504 且$\mathrm{y\:×\:y^\prime}$ = 2142 × 2412 = 5166504

Sincex× x' = y × y',y為x的回文自拍數。

Input 4669:
Output: 6496
登入後複製

說明 -

給定 x = 4669

所以 $\mathrm{x^\prime}$ = 9664 是將 x 的數字反轉得到

令 y = 6496。 y 是使用 x 的數字以不同順序形成的

所以 $\mathrm{y^\prime}$ = 6946 是將 y 的數字反轉得到的

$\mathrm{x\:×\:x^\prime}$ = 4669 × 9664 = 45121216 且$\mathrm{y\:×\:y^\prime}$ = 6496× 6946= 45121216

由於 x× x' = y × y',y 是 x 的回文自拍數。

Input: 456
Output: No palindromic selfie number exists
登入後複製

說明 -

給定 x = 456

所以 $\mathrm{x^\prime}$ = 654 是透過將 x 的數字反轉得到的

令 y = 546。 y 是使用 x 的數字以不同順序形成的

所以 $\mathrm{y^\prime}$ = 645 是將 y 的數字反轉得到的

$\mathrm{x\:×\:x^\prime}$ = 456 × 654 = 298224 和$\mathrm{y\:×\:y^\prime}$ = 546× 645= 352170

由於 $\mathrm{x\:×\:x^\prime}$ ≠ $\mathrm{y\:×\:y^\prime}$,因此 y 不是 x 的回文自拍照數。

沒有其他 456 的排列也符合自拍乘法規則。

解決方案

找到給定數字的回文自拍照數字的解決方法相當直觀且易於理解。

該方法包括以下步驟 -

  • 定義一個「反向」函數

    • 接受一個整數作為輸入

    • 將其轉換為字串

    • #反轉字串

    • #將其轉換回整數。

  • 定義一個函數「Swap」

    • 採用整數 i 和 j 作為輸入

    • 將整數轉換為字串

    • 交換字串中的第 i 個和第 j 個字元

    • #將字串轉換回整數。

  • 定義一個函數「置換」

    • 採用整數、l、r 和一組「排列」作為輸入。

    • 它遞歸地產生整數數字的所有可能排列

    • #它將它們儲存在「排列」集中。

  • 定義一個函數「palindromic_selfie」

    • #採用整數「num」和一組「permutations」作為輸入。

    • 它使用「permute」函數產生整數「num」的所有可能的排列

    • #然後,它透過將數字及其逆序的乘積與排列及其逆序的乘積進行比較,檢查這些排列中的任何一個是否滿足回文自拍屬性。

    • 如果找到這樣的排列,則傳回該數字。否則,返回-1。

  • 在主函數中,設定一個數字「n」和一個用於儲存排列的空集合。

  • 使用「n」和空集合呼叫「palindromic_selfie」函數,並儲存回傳結果。

  • 如果傳回結果為-1,則列印「不存在回文自拍數」。否則,列印返回結果。

範例:C 程式

以下 C 程式尋找給定整數的回文自拍編號(如果存在)並傳回它。它透過使用 permute() 函數找到給定數字的所有可能的排列,然後使用 reverse() 函數確定給定數字和該數字的任何排列是否滿足 palindrome_selfie() 函數中的自拍乘法規則來實現此目的。如果不存在這樣的數字,則會列印「No Palindrome Selfie Number Exists」。

#include <bits/stdc++.h>
using namespace std;

// Function to reverse the digits of a number
int reverse(int num){
   
   // converting number to string
   string str = to_string(num);
   reverse(str.begin(), str.end());
   
   // converting string to integer
   num = stoi(str);
   return num;
}

// Function that Swaps the digits i and j in the num
int Swap(int num, int i, int j){
   char temp;
   
   // converting number to string
   string s = to_string(num);
   
   // Swap the ith and jth character
   temp = s[i];
   s[i] = s[j];
   s[j] = temp;
   
   // Convert the string back to int and return
   return stoi(s);
}

// Function to get all possible permutations of the digits in num
void permute(int num, int l, int r, set<int> &permutations){
   
   // Adds the new permutation obtained in the set
   if (l == r)
      permutations.insert(num);
   else{
      for (int i = l; i <= r; i++){
         
         // Swap digits to get a different ordering
         int num_copy = Swap(num, l, i);
         
         // Recurse to next pair of digits
         permute(num_copy, l + 1, r, permutations);
      }
   }
}

// Function to check for palindrome selfie number
int palindromic_selfie(int num, set<int>& permutations) {
   
   // Length of the number required for calculating all permutations of the digits
   int l = to_string(num).length() - 1;
   permute(num, 0, l, permutations); // Calculate all permutations
   
   //Remove the number and its reverse from the obtained set as this is the LHS of multiplicative equation
   auto n1 = permutations.find(reverse(num));
   auto n2 = permutations.find(num);
   if (n1 != permutations.end())
      permutations.erase(n1);
   if (n2 != permutations.end())
      permutations.erase(n2);
   
   // Go through all other permutations of the number
   for (set<int>::iterator it = permutations.begin(); it != permutations.end(); it++) {
      int num2 = *it;
      
      // Check if selfie multiplicative rule holds i.e. x * reverse(x) = y * reverse(y)
      if (num * reverse(num) == num2 * reverse(num2)) {
         return num2;
      }
   }
   
   // If no such number found
   return -1;
}
int main(){
   int n = 1234;
   cout << "n: " << n << endl;
   set<int> permutations;
   int ans = palindromic_selfie(n, permutations);
   if (ans == -1) {
      cout << "No Palindromic Selfie Number Exists" << endl;
   }
   else{
      cout << ans << endl;
   }
   return 0;
}
登入後複製

输出

n: 1234
No Palindromic Selfie Number Exists
登入後複製

时间和空间复杂度分析

时间复杂度:O(n!)

此代码的时间复杂度为 O(n!),其中 n 是输入数字的位数。这是因为有 n! n 位数字的排列,并且 permute() 方法生成数字的所有潜在排列。

空间复杂度:O(n!)

由于集合“排列”包含所有可能的数字组合,等于 n!,因此该代码的空间复杂度为 O(n!)。 verse() 和 Swap() 函数的空间复杂度为 O(n),因为它们还生成长度为 n 的临时字符串。空间复杂度为 O(n!) 的排列集合主导了整个代码的空间复杂度。

结论

回文自拍數是数学中一个有趣的概念。它们满足自拍乘法方程。本文讨论了一种方法来查找一个数字是否具有回文自拍号码,如果是,则返回它。对问题的概念、解决方法、C++程序以及程序的时间和空间复杂度进行了深入分析。

以上是回文自拍數的詳細內容。更多資訊請關注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脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 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)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
微信自拍表情可以刪除嗎 微信自拍表情可以刪除嗎 Feb 27, 2024 pm 09:34 PM

在微信與好友聊天時,我們不僅使用文字,還經常藉助各種表情包來更好地表達情感。其中,微信的自拍表情是許多人在聊天過程中喜歡使用的表達方式。但有時,我們可能不小心添加了一些不合適的自拍表情,這時就需要將其刪除。那麼究竟該如何刪除呢,這篇教學攻略將為大家帶來詳細介紹,不了解的小夥伴們快來跟著本文一起一探究竟吧。微信自拍表情怎麼刪除掉? 1.首先需要打開微信,在表情商店介面點選進入設定圖示。 2、然後需要在我的表情介面點選我的自拍表情。 3.接著點選進入我的自拍表情,選擇整理功能。 4.最後勾選需要刪除的

全球數字虛擬幣交易平台排行榜前十(2025權威排名) 全球數字虛擬幣交易平台排行榜前十(2025權威排名) Mar 06, 2025 pm 04:36 PM

2025年全球數字虛擬幣交易平台競爭激烈,本文根據交易量、安全性、用戶體驗等指標,權威發布2025年全球十大數字虛擬幣交易平台排行榜。 OKX憑藉強大的技術實力和全球化運營策略居首,Binance以高流動性和低費用緊隨其後。 Gate.io、Coinbase、Kraken等平台憑藉各自優勢穩居前列。榜單涵蓋Huobi、KuCoin、Bitfinex、Crypto.com和Gemini等交易平台,各有特色,但投資需謹慎。選擇平台需考慮安全性、流動性、費用、用戶體驗、幣種選擇及監管合規性等因素,理性投資

C程式用來求出一個數的最大質因子 C程式用來求出一個數的最大質因子 Aug 27, 2023 am 10:09 AM

質因數 - 在數論中,正整數的質因數是精確整除該整數的質因數。找出這些數字的過程稱為整數分解或質因數分解。例 - 288 的質因數是:288=2x2x2x2x2

幣圈十大交易所2025年最新 數字貨幣app排行榜前十 幣圈十大交易所2025年最新 數字貨幣app排行榜前十 Feb 27, 2025 pm 06:33 PM

虛擬貨幣十大交易平台排行榜(2025年最新): 幣安:全球龍頭,高流動性,監管受關注。 OKX:龐大用戶基數,支持多種幣種,提供槓桿交易。 Gate.io:資深交易所,多種法幣支付方式,提供多種交易對和投資產品。 Bitget:衍生品交易所,高流動性,低費用。 火幣:老牌交易所,支持多種幣種和交易對。 Coinbase:美國知名交易所,受監管嚴格。 Phemex等等。

回文子字串查詢在C++中 回文子字串查詢在C++中 Sep 22, 2023 am 09:05 AM

在本教程中,我們需要解決給定字串的回文子串查詢。解決回文子字串查詢比解決C++中的常規查詢複雜得多。它需要更複雜的程式碼和邏輯。在本教程中,我們提供了字串str和Q個子字串[L...R]查詢,每個查詢都有兩個值L和R。我們的目標編寫一個程式來解決查詢以確定substring[L...R]是否是回文。我們必須確定在L到R範圍內形成的子字串是否是回文來解決每個查詢。例如-Let'sinput"abbbabaaaba"asourinputstring.Thequer

十大數字貨幣交易平台 數字貨幣交易平台top10榜單最新 十大數字貨幣交易平台 數字貨幣交易平台top10榜單最新 Mar 17, 2025 pm 05:57 PM

十大數字貨幣交易平台:1. OKX,2. Binance,3. Gate.io,4. Huobi Global,5. Kraken,6. Coinbase,7. KuCoin,8. Bitfinex,9. Crypto.com,10. Gemini,這些交易所各具特色,用戶可根據安全性、費用、幣種選擇、用戶界面和客戶支持等因素選擇適合自己的平台。

數字貨幣app十大交易平台 炒幣正規平台app推薦 數字貨幣app十大交易平台 炒幣正規平台app推薦 Mar 07, 2025 pm 06:51 PM

本文推薦十個數字貨幣交易App:1. OKX;2. Binance;3. Gate.io;4. Huobi Global;5. Kraken;6. Coinbase;7. KuCoin;8. Crypto.com;9. Bitfinex;10. Poloniex。選擇平台需考慮安全性、流動性、交易費用、幣種選擇、用戶界面、客服支持及法規合規性等因素,謹慎評估風險,切勿盲目跟風。

潮自拍如何將音量鍵設定成拍照呢 蘋果手機快速調整音量鍵拍照的方法 潮自拍如何將音量鍵設定成拍照呢 蘋果手機快速調整音量鍵拍照的方法 Mar 12, 2024 pm 02:28 PM

  潮自拍如何將音量鍵設定成拍照呢?這款軟體的好用,便捷我相信小夥伴們都是有目共睹的,我們在拍照的過程中,是不是要經常點擊軟體頁面中的按鍵呢,是不是很不方便我們進行操作呢?那我們該如何調節軟體中的按鍵成為聲音鍵呢?有沒有快速的操作方法呢?以下就是小編所帶來的蘋果手機如何設定音量鍵拍照的方法。希望對你們有幫助哦。潮自拍蘋果手機快速調整音量鍵拍照的方法  1.在蘋果手機主螢幕,點選設定圖示。  2.在設定介面,點選這裡的相機選項。  3在相機設定介面,將這裡的使用調​​高音量鍵連拍功能開啟,這樣在

See all articles