C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で2つの異なる基数体系における回文を判定する方法

このチュートリアルでは、与えられた数が2つの異なる基数体系において回文であるかどうかを判定するプログラムを作成します。

具体的には、10進数と指定された別の基数体系という2つの条件が与えられ、それぞれの体系で回文になっているかどうかを確認する必要があります。

問題解決の手順

  • 数値と基数を初期化します
  • 10進数において回文かどうかを判定します
  • 数値を別の基数体系の文字列形式に変換します
  • 変換後の数値が回文かどうかを確認します
  • 両方の基数体系で回文であれば「Yes」を出力し、そうでなければ「No」を出力します

コード例

#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 isDoubleBasePalindrom(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) {
    // k進数に変換
    string str = integer_to_string(n, k);
    string str_copy = str;
    // k進数で反転
    reverse(str.begin(), str.end());
    if (str == str_copy) {
      return "Yes";
    }
  }
  return "No";
}

int main() {
  int n = 313;
  int k = 2;
  cout << isDoubleBasePalindrom(n, k) << endl;
  return 0;
}

出力結果

上記のコードを実行すると、以下の出力が得られます。

Yes

まとめ

このチュートリアルについてご質問がある場合は、コメント欄でお知らせください。

  1. C++で二重積分を計算するプログラム|シンプソン1/3則による数値積分の実装

    変数xの下限・上限、変数yの下限・上限、そしてx・yそれぞれの刻み幅(ステップ幅)が与えられたとき、二重積分を数値的に計算し、その結果を表示するのが本記事のテーマです。 入出力の例 入力: xの刻み幅 = 1.2 yの刻み幅 = 0.54 xの下限 = 1.3 xの上限 = 2.1 yの下限 = 1.0 yの上限 = 2.1 出力: double integration is : 2.1 計算のアプローチ 本プログラムでは、以下の手順で二重積分を求めます。 xとyの上限・下限の値に加えて、x・yそれぞれの刻み幅を入力として受け取ります。 二重積分の計算にはシンプソン1/3則(Simpson

  2. 数値を逆順に並べ替えるC++プログラムの書き方と解説

    数値の反転とは、その桁の数字を逆の順序に並べ替えて格納することを指します。 例えば、元の数値が6529である場合、出力として9256が表示されます。 以下に、数値を反転させるC++プログラムの例を示します。 サンプルプログラム #include <iostream> using namespace std; int main() { int num = 63972, rev = 0; while(num > 0) { rev = rev*10 + num%10; num = num/10; } cout<