Счастливые билеты

Что такое счастливый билет в транспорте? У счастливого билета сумма трех левых цифр и сумма трёх правых цифр равны.

Напишем программу, которая выведет на экран все возможные комбинации счастливых билетов, в заданном диапазоне, и посчитаем их количество.

Диапазон рассчитываемых значений определяется значениями переменных i и j. Значения переменных запрашиваем у пользователя, выводя приглашение на ввод операторами cout и получая значения с помощью операторов cin.

В цикле for мы не используем блок инициализации индексов, т.к. значение переменной i мы получаем от пользователя. Если бы мы рассчитывали весь диапазон значений номеров билетов, то цикл выглядел бы так:

for(int i=1; i < 1000000; i++){...}
Имена переменных

На каждой итерации мы получаем значения переменных a и b путем деления значения счетчика i на 1000.

Для получения значения a, мы используем простое деление:

a = i / 1000;

т.к. переменные a и i целые (int), дробная часть отбрасывается и мы получаем 3 старших разряда.

Для получения значения b, мы используем оператор % (взятие по модулю), возвращающий остаток от целочисленного деления, т.е. правую тройку цифр.

Подобным образом получаем значения переменных a1, a2, a3, b1, b2, b3.

Если суммы значений равны, выводим на экран результаты расчета.

#include <iostream>
using namespace std;

int main()
{
	int a = 0, b = 0, n = 0, last = 0, i=0, j=0;
	int a1 = 0, a2 = 0, a3 = 0, b1 =0, b2 = 0, b3 = 0;
	cout << "i = ";
	cin >> i;
	cout << "j = ";
	cin >> j;
	for (; i < j; i++) {
		a = i / 1000;
		b = i % 1000;
		a1 = a % 10;
		a2 = a % 100 / 10;
		a3 = a % 1000 / 100;
		b1 = b % 10;
		b2 = b % 100 / 10;
		b3 = b % 1000 / 100;
		if (a1 + a2 + a3 == b1 + b2 +b3) {
			printf("i = %06d\ta = %03d\tb = %03d\tdL = %03d\n", i, a, b, i - last);
			last = i;
			n++;
		}
	}
	cout << "\nn = " << n << endl;
  return 0;
}