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

C++では偶数桁と奇数桁の合計の絶対差が1であるすべてのn桁の数値を出力します


この問題では、整数nが与えられ、偶数と奇数の桁の合計の絶対差が等しくなるように、すべてのn桁の数値を出力する必要があります。は1です。0の先頭にある数字を作成している間は考慮されません。

絶対差 は、値が絶対値(正の値)である両方の数値の差です。

問題を理解するために例を見てみましょう-

Input: n = 2
Output: 10 12 21 23 32 34 43 45 54 56 65 67 76 78 87 89 98
Explaination : taking an of the numbers from the output,
54, even digit - odd digit = 5 - 4 = 1
89, even digit - odd digit = 8 - 9 = -1 , |-1| = 1.

この問題を解決するには、差が1または-1のすべてのn桁の数字を見つける必要があります。このために、すべての値で桁の場所を固定し、その位置が偶数または奇数になるように基づいて、条件が満たされるように、数値の他の場所の値を呼び出します。

以下のプログラムは私たちの解決策を説明します-

#include <iostream>
using namespace std;
void printNumber(int n, char* out, int index, int evenSum, int oddSum){
   if (index > n)
      return;
   if (index == n){
      if (abs(evenSum - oddSum) == 1) {
         out[index] = ' ';
         cout << out << " ";
      }
      return;
   }
   if (index & 1) {
      for (int i = 0; i <= 9; i++) {
         out[index] = i + '0';
         printNumber(n, out, index + 1, evenSum, oddSum + i);
      }
   } else {
      for (int i = 0; i <= 9; i++) {
         out[index] = i + '0';
         printNumber(n, out, index + 1, evenSum + i, oddSum);
      }
   }
}
int findNumberWithDifferenceOne(int n) {
   char out[n + 1];
   int index = 0;
   int evenSum = 0, oddSum = 0;
   for (int i = 1; i <= 9; i++) {
      out[index] = i + '0';
      printNumber(n, out, index + 1, evenSum + i, oddSum);
   }
}
int main() {
   int n = 3;
   cout<<n<<" digit numbers with absolute difference 1 : \n";
   findNumberWithDifferenceOne(n);
   return 0;
}
出力
3 digit number with absolute difference 1 −
100 111 120 122 131 133 142 144 153 155 164 166 175 177 186 188 
197 199 210 221 230 232 241 243 252 254 263 265 274 276 285 287 
296 298 320 331 340 342 351 353 362 364 373 375 384 386 395 397 
430 441 450 452 461 463 472 474 483 485 494 496 540 551 560 562 
571 573 582 584 593 595 650 661 670 672 681 683 692 694 760 771 
780 782 791 793 870 881 890 892 980 991

  1. C++で奇数と偶数のノードを含むすべてのレベルを出力します

    この問題では、ツリーが与えられます。そして、偶数のノードと奇数のノードを含むすべてのレベルを印刷する必要があります。 概念をよりよく理解するために例を見てみましょう 出力- Levels with odd number of nodes: 1, 3, 4 Levels with even number of nodes: 2 説明 −第1レベルには1つの要素(奇数)、第2レベルには2つの要素(偶数)、第3レベルには3つの要素(奇数)、第4レベルには1つの要素(偶数)が含まれます。 さて、この問題を解決するために。各レベルでノードの数を見つけ、それに応じて偶数-奇数レベルを出力す

  2. 奇数桁と偶数桁の合計の差。

    問題の説明 与えられた長整数nを使用して、奇数桁と偶数桁の合計の差が0であるかどうかを確認するプログラムを作成します。インデックスは0から始まります。 例 n = 1212112 Sum of odd position elements = 2 + 2 + 1 = 5 Sum of even position elements = 1 + 1 + 1 + 2 = 5 Difference = 5 - 5 = 0 Output = Yes 例 以下は、必要な出力を見つけるためのJavaのプログラムです。 class JavaTester {    public st