Задача
Найти количество двухзначных чисел, которые не меняют свою сумму цифр при умножении на однозначное натуральное число.
Входные данные
В единственной строке задано целое одно цифровое число.
Выходные данные
Количество чисел.
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> using namespace std; int main() { int n,a,b,c,k=0; // задаем переменные cin>>n; //вводим число, на которое будут умножаться все двухзначные числа for (int i=10;i<=99;i++) { //задаем цикл от 10 до 99(все двухзначные числа) c=i*n; //для удобства задаем переменную с - произведение двухзначного числа и заданного нами одно цифрового a=i/10+i%10; //задаем переменную а - сума цифр двухзначного числа b=(c/10)%10+c%10+c/100; // и вычисляем сумму цифр числа с if (a==b) k++; //если суммы чисел а и с равны то добавляем 1 на "счетчик" } cout<<k; //выводим на экран количество чисел return 0; } |
Тесты
№ | Входные данные | Выходные данные |
1 | 2 | 10 |
2 | 0 | 0 |
3 | 1 | 90 |
4 | 9 | 6 |
5 | 5 | 10 |
Решение
Для начала задаем переменные и вводим с клавиатуры число, на которое будут умножаться все двухзначные числа. Задаем цикл от 10 до 99. Для удобства вводим переменную [latex]c[/latex], которая равна произведению двухзначного числа на входное число и переменную [latex]a[/latex], которая равна сумме цифр входного числа. Далее находим сумму цифр числа с — [latex](c/10)%10+c%10+c/100[/latex]. Если сумма цифр входного числа равна сумме цифр [latex]c[/latex], то добавляем 1 на «счетчик». В конце выводим на экран количество чисел, которые не меняют свою сумму цифр при умножении на число, которое мы ввели с клавиатуры.
Ссылку на код здесь.
Задача взята с сайта.
— «e-olymp 7338, Постоянная сумма цифр» это идентификатор и название задачи, а не ключевые слова. Перечитайте текст и выделите существенные слова и словосочетания.
— Нужна ссылка на код в ideone.com
— if (c/10<10) ... else if (c/10>=10)… Зачем вторая проверка? else уже означает, что >=10.
— Незачем дважды вычислять a=i/10+i%10. Нужно это сделать один раз перед условным оператором.
— Зачем проверка на 2 или 3 знака в числе? Разве ваша формула b=(c/10)%10+c%10+c/100 не сработает в обоих случаях?
Спасибо за замечания. Благодаря ним код стал намного меньше.
Зачтено. Молодец.