#include< iostream >
int main()
{
int a, b;
std::cin >> a >> b;
a = a - a % 4 + 4*a%4;
b = b - b % 4;
std::cout << (b - a) / 4 + 1;
}
#include <iostream>
using namespace std;
int main() {
const auto x = 4U;
cout << "A: "; unsigned a; cin >> a;
cout << "B: "; unsigned b; cin >> b;
while (a % x && a < b) ++a;
while (b % x && b > a) --b;
if (a == b && a % x != 0) puts("N: 0");
else if (a == b && a % x == 0) puts("N: 1");
else {
auto n = 0U;
for (auto m = a; m <= b; m += x) ++n;
cout << "N: " << n << '\n';
}
system("pause > nul");
}
Каждое натуральное число N, кратное четырём (4, 8, 12, 16, ..), можно занумеровать как N/4 (то есть 1, 2, 3, 4, ..). В диапазоне натуральных чисел [a;b] (от a до b включительно) первым числом кратным четырём и не меньшим a будет число с номером (a + 3)/4, a последним числом кратным четырём и не большим b будет число с номером b/4 (под делением подразумевается целочисленное деление !). Поэтому общее количество подходящих чисел можно подсчитать по формуле 1+b/4-(a+3)/4, которая верна даже тогда, когда диапазон [a;b] не содержит чисел, кратных четырём. И никакие циклы тут и даром не нужны, всё гораздо проще:
#include <iostream>
int main() { unsigned long long a, b;
std::cout << "a b » "; std::cin >> a >> b;
std::cout << 1 + b / 4 - (a + 3) / 4 << std::endl; system("pause > nul"); return 0; }
Поглядел ответы. Если исходить из того, как у нас:
Существуют два подхода к определению натуральных чисел:
числа, возникающие при подсчёте (нумерации) предметов: первый, второй, третий, четвёртый, пятый…;
числа, возникающие при обозначении количества предметов: 0 предметов, 1 предмет, 2 предмета, 3 предмета, 4 предмета, 5 предметов…
В первом случае ряд натуральных чисел начинается с единицы, во втором — с нуля. Не существует единого для большинства математиков мнения о предпочтительности первого или второго подхода (то есть считать ли ноль натуральным числом или нет). В подавляющем большинстве российских источников традиционно принят первый подход
// мой вариант, вроде проще не бывает же?
N = B/4 - (A-1)/4;
/* Сергей Степанов (мелкая проблема если ввели 0 и 0, но это как бы вне натуральных)
A = A - A % 4 + 4 * (bool)(A % 4); //тут бул забыл
B = B - B % 4;
N = (B - A) / 4 + 1;
*/
// Маша Малинина (мелкая проблема если ввели 0 и 0, но это как бы вне натуральных)
//N = 1 + B / 4 - (A + 3) / 4;