Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- using namespace std;
- //Получить все натуральные числа <= 10^6,
- //которые являются палиндромами как в десятичной, так и в двоичной системах.
- int main() {
- const int DEC_SIZE = 7;
- const int BIN_SIZE = 21;
- char digit[DEC_SIZE] = { 0 };
- char binary[BIN_SIZE] = { 0 };
- cout << 0 << endl;
- for (int number = 1; number <= 1e6; number++) {
- // Перевод в строку
- int temp = number;
- for (int i = 0; i < DEC_SIZE; i++) {
- digit[i] = temp % 10;
- temp /= 10;
- }
- //Поиск первой ненулевой цифры
- int first_dec;
- for (int i = DEC_SIZE - 1; i >= 0; i--) {
- if (digit[i]) {
- first_dec = i;
- //Вывод перевода
- //for (int j = i; j >= 0; j--) {
- // cout << int(digit[j]);
- //}
- //cout << endl;
- break;
- }
- }
- //Перевод в строку в двоичной системе
- temp = number;
- for (int i = 0; i < BIN_SIZE && temp; i++) {
- binary[i] = temp % 2;
- temp /= 2;
- }
- //Поиск первой ненулевой цифры
- int first_bin;
- for (int i = BIN_SIZE - 1; i >= 0; i--) {
- if (binary[i]) {
- first_bin = i;
- //Вывод перевода
- //for (int j = i; j >= 0; j--) {
- // cout << int(binary[j]);
- //}
- //cout << endl;
- break;
- }
- }
- int p_dec = first_dec / 2 ;
- int p_bin = first_bin / 2 ;
- bool d_simple = true, b_simple = true;
- for (int p = 0; p <= p_dec; p++) {
- if (digit[p] != digit[first_dec - p]) {
- d_simple = false;
- break;
- }
- }
- if (d_simple) {
- for (int p = 0; p <= p_bin; p++) {
- if (binary[p] != binary[first_bin - p]) {
- d_simple = false;
- break;
- }
- }
- }
- if (d_simple && b_simple) {
- cout << number << endl;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement