C++程式中的雙進位制迴文


在本教程中,我們將編寫一個程式來檢查給定的數字是否是兩個數字系統中的迴文。

我們給出了一個數字和另一個數字系統的基數。我們必須檢查給定的數字是否是十進位制數字系統和給定的數字系統中的迴文。

讓我們看看解決這個問題的步驟。

  • 初始化數字和數字系統基數。

  • 檢查給定的數字是否是十進位制數字系統中的迴文。

  • 將數字轉換為另一個數字系統的字串格式。

  • 檢查轉換後的數字是否是迴文。

  • 如果給定的數字是兩個數字系統中的迴文,則列印,否則列印

示例

讓我們看一下程式碼。

 即時演示

#include <bits/stdc++.h>
using namespace std;
string integer_to_string(int n, int base) {
   string str;
   while (n > 0) {
      int digit = n % base;
      n /= base;
      str.push_back(digit + '0');
   }
   return str;
}
string isDoubleBasePalidrome(int n, int k) {
   int temp = n;
   int number_reverse = 0;
   while (temp > 0) {
      number_reverse = temp % 10 + number_reverse * 10;
      temp /= 10;
   }
   if (number_reverse == n) {
      // converting to base k
      string str = integer_to_string(n, k);
      string str_copy = str;
      // reversing number in base k
      reverse(str.begin(), str.end());
      if (str == str_copy) {
         return "Yes";
      }
   }
   return "No";
}
int main() {
   int n = 313, k = 2;
   cout << isDoubleBasePalidrome(n, k) << endl;
   return 0;
}

輸出

如果您執行上面的程式碼,您將獲得以下結果。

Yes

結論

如果您對本教程有任何疑問,請在評論部分中提及它們。

更新日期:2021年1月28日

273瀏覽量

開啟你的 職業生涯

完成課程即可獲得認證

開始
廣告
© . All rights reserved.