Advertisement
Caneq

lb4.2.8

Nov 22nd, 2018
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. using namespace std;
  4. //Получить все натуральные числа <= 10^6,
  5. //которые являются палиндромами как в десятичной, так и в двоичной системах.
  6. int main() {
  7.  
  8.     const int DEC_SIZE = 7;
  9.     const int BIN_SIZE = 21;
  10.  
  11.     char digit[DEC_SIZE] = { 0 };
  12.     char binary[BIN_SIZE] = { 0 };
  13.     cout << 0 << endl;
  14.     for (int number = 1; number <= 1e6; number++) {
  15.         // Перевод в строку
  16.         int temp = number;
  17.         for (int i = 0; i < DEC_SIZE; i++) {
  18.             digit[i] = temp % 10;
  19.             temp /= 10;
  20.         }
  21.  
  22.         //Поиск первой ненулевой цифры
  23.         int first_dec;
  24.         for (int i = DEC_SIZE - 1; i >= 0; i--) {
  25.             if (digit[i]) {
  26.                 first_dec = i;
  27.                 //Вывод перевода
  28.                 //for (int j = i; j >= 0; j--) {
  29.                 //  cout << int(digit[j]);
  30.                 //}
  31.                 //cout << endl;
  32.                 break;
  33.             }
  34.         }
  35.  
  36.         //Перевод в строку в двоичной системе
  37.         temp = number;
  38.         for (int i = 0; i < BIN_SIZE && temp; i++) {
  39.             binary[i] = temp % 2;
  40.             temp /= 2;
  41.         }
  42.  
  43.         //Поиск первой ненулевой цифры
  44.         int first_bin;
  45.         for (int i = BIN_SIZE - 1; i >= 0; i--) {
  46.             if (binary[i]) {
  47.                 first_bin = i;
  48.                 //Вывод перевода
  49.                 //for (int j = i; j >= 0; j--) {
  50.                 //  cout << int(binary[j]);
  51.                 //}
  52.                 //cout << endl;
  53.                 break;
  54.             }
  55.         }
  56.         int p_dec = first_dec / 2 ;
  57.         int p_bin = first_bin / 2 ;
  58.         bool d_simple = true, b_simple = true;
  59.         for (int p = 0; p <= p_dec; p++) {
  60.             if (digit[p] != digit[first_dec - p]) {
  61.                 d_simple = false;
  62.                 break;
  63.             }
  64.         }
  65.         if (d_simple) {
  66.             for (int p = 0; p <= p_bin; p++) {
  67.                 if (binary[p] != binary[first_bin - p]) {
  68.                     d_simple = false;
  69.                     break;
  70.                 }
  71.             }
  72.         }
  73.         if (d_simple && b_simple) {
  74.             cout << number << endl;
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement