Помогите решить на C++
Остатки
Даны целые неотрицательные числа a
, b, c, d, при этом 0⩽c<d. Выведите в порядке возрастания все числа от a до b, которые дают остаток c при делении на d
.
В этой задаче нельзя использовать инструкцию if, должен быть только один цикл.
Входные данные
На вход подаются четыре строки, в каждой из которых написано по одному неотрицательному целому числу — a
, b, c, d. Все числа не превосходят 2⋅109, 0⩽c<d
.
Выходные данные
Выведите ответ к задаче.
#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;
}
#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;
}