Top.Mail.Ru
Ответы

Помогите решить на C++

Остатки

Даны целые неотрицательные числа a
, b, c, d, при этом 0⩽c<d. Выведите в порядке возрастания все числа от a до b, которые дают остаток c при делении на d

.

В этой задаче нельзя использовать инструкцию if, должен быть только один цикл.

Входные данные

На вход подаются четыре строки, в каждой из которых написано по одному неотрицательному целому числу — a
, b, c, d. Все числа не превосходят 2⋅109, 0⩽c<d

.

Выходные данные

Выведите ответ к задаче.

По дате
По Рейтингу
Аватар пользователя
Новичок
4мес

#include <iostream>
using namespace std;

int main() {
long long a, b, c, d;
cin >> a >> b >> c >> d; // Читаем входные данные

// Находим первое число >= a, которое дает остаток c при делении на d
long long start = a + (d + c - a % d) % d;

// Запускаем цикл от start до b
for (long long i = start; i <= b; i += d) {
cout << i << endl; // Выводим подходящие числа
}

return 0;
}

Аватар пользователя
Оракул
4мес
12345678910111213
 #include using namespace std; 
 
int main() { long long a, b, c, d; cin >> a >> b >> c >> d; 
 
// Вычисляем первое число в [a, b] с остатком c 
long long start = a + ((c + d - (a % d)) % d); 
 
// Единственный цикл для печати результата 
for (long long i = start; i <= b; i += d) 
    cout << i << " "; 
 
return 0; 
}