Почему программа на C выдаёт неправильный ответ?

Задание: Некоторое натуральное число заканчивается на двойку. Если ее переставить на первое место, то число удвоится. Какое минимальное число было изначально?

Мой код на C:

#include <stdio.h>
#include <math.h>

int main() {
    int a = 1;
    int proverka = 0;
    while (1)
    {
        if (a % 10 == 2) {
            int r = a; //Сохраняем начально значение a
            int x = a;
            int count = 0;
            while (x > 0) {
                x /= 10;
                count += 1;  //Считаем, сколько у числа разрядов
            }
            a /= 10;
            a = a + 2 * pow(10, (count - 1));
            if (a / r == 2) {
                printf("r = %d\n", r);
                printf("a = %d\n\n", a);
                proverka = 1;
            }
            a = r;
        }
        a++;

        if (proverka == 1) {
            break;
        }
    }
}

Ответ, который выдаёт программа:

r = 102
a = 210

Ответ, очевидно, неверный, ведь 102 * 2 != 210. Я достаточно долго над ней просидел, но всё не могу понять в чём ошибка в коде. Буду признателен, если поможете


Ответы (0 шт):