Решите задачу написав при этом соответствующую программу

Найти количество двузначных чисел, которые не меняют свою сумму цифр при умножении числа на однозначное число n (n = 0 ... 9). входные данные Целое число n (0 ≤ n ≤ 9). Исходные данные Вывести искомое количество двузначных чисел. Желательно на С++ Я написал такой код но он не работает(когда я его запускаю мне на экран начинает выводиться бесконечное количество нулей)

int n,sum1,sum2,x;
    cin >> n;
    sum1 = 10;
    sum2 = 10;
    
        while(sum1<100)
        {
            sum1++;
            sum2++;
            sum1 = sum1 % 10;
            x = sum1 * n;
            sum2 = sum2 / 10;
            sum1 = sum1 * n;
            sum2 = sum2 * n;
            
            if (sum1 +sum2 ==x)
            
                cout << sum2*10;
            else
            {
                cout << "нема таких чисел";
            }
            
            
        }
            

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

Автор решения: Zhihar
        sum1++;
        sum1 = sum1 % 10;

вот этот код вам никогда и не даст достигнуть чего-то большего 9 :)

  1. зачем вы вообще используете while, когда для вашей задачи идеально подходит for

     for (int value = 10; value < 100; value ++)
    
  2. ваш код как-то вообще не соответствует приведенному вами же условию задачи

в условии сказано - что есть некоторое число с некоторой суммой цифр сумму цифр двухзначного числа value можно подсчитать так:

const sum1 = (value % 10) + ((value / 10) % 10);

а сумму произведения двухзначного числа value на n абсолютно также, только учитывая, что число все таки может быть трехзначным

const value2 = value * n;
const sum2 = (value2 % 10) + ((value2 / 10) % 10) + ((value2 / 100) % 10);
  1. в добавок в задаче требуется подсчитать кол-во таких чисел, а не сами числа:

    int count = 0;
    ...
    if (sum1 == sum2)
        count ++;
    
→ Ссылка
Автор решения: Mikhailo

Так годится?

#include <iostream>

using namespace std;

int main() {
    int n;
    cin >> n;

    if (n < 0 || n > 9) {
        cerr << "Wrong input\n";
        return 1;
        }

    int count = 0;

    for (int i = 10; i <= 99; ++i) {
        int sum1 = 0, sum2 = 0, k = i, j = i * n;

        while (k || j) {
            sum1 += k % 10;
            sum2 += j % 10;
            k /= 10;
            j /= 10;
            }

        if (sum1 == sum2) {
            cout << i << " and " << i* n << "\n";
            count++;
            }
        }

    cout << "There are " << count << " that numbers\n";
    }
→ Ссылка