Калиф-аист – Ну и славный же у тебя нос, великий визирь! Клянусь бородой пророка, я в жизни своей не видывал ничего подобного. Для великого визиря такой нос – истинное украшение.
– Вы льстите мне, о мой властелин! – сказал визирь и поклонился. При этом он стукнулся носом о землю.
– Но осмелюсь доложить, что и вы ничего не потеряли, превратившись в аиста. Я бы даже позволил себе сказать, что вы стали ещё красивее.
Напишите программу, которая найдет строку с наибольшим количеством красивых чисел.
Формат ввода Вводятся строки положительных целых чисел, записанных через пробел.
Формат вывода Нужно найти строку с наибольшим количеством чисел, кратных семи. Если таких строк несколько, то выбрать ту, что встретилась первой. Вывести из этой строки числа, кратные семи, через запятую и пробел в исходном порядке.
Можно конечно поизвращаться и придумать интересный алгоритм, но можно просто написать в лоб цикл с проверкой.
#include <iostream> int main(){ int num_1, num_2; cin >> num_1 >> num_2; for (int i = num_1 + 1; i != num_2; i++) { int cur = i, num = i; int res = 0; while (cur != 0) { int mod_n = cur % 10; if (mod_n == 0) { break; } if (num % mod_n == 0) { res = 1; } else { res = 0; break; } cur /= 10; } if (res) { cout << i << ' '; } } }
Коротко, в двух словах, о чем тут код. мы проходим по циклу от A до B, для каждого числа, в цикле проверяем, делится ли оно на цифры из которых состоит. Для этого мы запоминаем в отдельную переменную cur наше число, и проверяем остаток от деления на 10 (т.е. самую левую цифру), после мы в cur записываем тоже число, но без последней цифры. на примере 124. проверяем на делимость на 4, потом запоминаем 12, проверяем на делимость на 2, потом запоминаем 1, проверяем на делимость на 1, потом записываем 0. Как только видим 0 прекращаем. Дальше в цикле есть проверка на то, что если хоть раз что-то не поделилось, то переходим к след. числу
#include <iostream>
using namespace std;
int a, b, numb;
bool init;
int main()
{
do {
cout << "Input a b: ";
cin >> a >> b;
if ((a > b) || (a <= 0) || (b <= 0))
cout << "Input error! Try again" << endl;
} while ((a > b) || (a <= 0) || (b <= 0));
for (int i = a; i <= b; i++) {
init = true;
numb = i;
do {
if (numb % 10 == 0)
init = false;
else if ((i / (numb % 10) * (numb % 10)) != i)
init = false;
numb /= 10;
} while (numb != 0);
if (init == true)
cout << i << " ";
}
return 0;
}