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浏览量

开启你的 职业生涯

完成课程即可获得认证

开始
广告