Ебашьте с ноги. Я высрал говнокод.
{
static int findCount (char[] arr, char val)
{
int res = 0;
foreach (char t in arr)
{
if (t==val)
res++;
}
return res;
}
static void Main()
{
char[] digits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
int k = 0;
for (int my_num = 100000; my_num<999999; my_num++)
{
char[] num_converted = my_num.ToString().ToCharArray();
if (num_converted[1]!='2' || num_converted[5]!='1') {continue;} // 2 и 6 цифры
if (findCount(num_converted, '9') != 1) {continue;} //Какая-нибудь из цифр равна 9
bool isDifferent = true; //Число состоит из разных цифр
foreach (char dig in digits)
{
if (findCount(num_converted, dig) > 1) {isDifferent = false;}
}
if (isDifferent == false) {continue;}
int summ = 0; //Сумма цифр равна 29
foreach (char dig in num_converted)
{
summ+=(int)(dig - '0');
}
if (summ != 29) {continue;}
int evenCounts = 1; //Все чётные цифры идут по порядку
for (int i = 1; i<num_converted.Length; i++ )
{
if (num_converted[i]%2 == 0 && num_converted[i-1]%2 != 0) {evenCounts--;}
}
if (evenCounts!=0) {continue;}
//Разбиение на 2 числа и проверка их
int tempFirst = (int)(num_converted[0] - '0')*100 + (int)(num_converted[1] - '0')*10 + (int)(num_converted[2] - '0');
int tempSecond = (int)(num_converted[3] - '0')*100 + (int)(num_converted[4] - '0')*10 + (int)(num_converted[5] - '0');
if (tempFirst%4 !=0) {continue;}
if ((tempFirst+tempSecond)%5 ==0) {continue;}
//Проверка суммы каких-то соседей
int tempPairs = 0;
for (int i = 1; i<num_converted.Length; i++ )
{
if ( (int)(num_converted[i-1] - '0') + (int)(num_converted[i] - '0') == 7) {tempPairs++;}
}
if (tempPairs!=1) {continue;}
Console.WriteLine(my_num);
k++;
}
Console.WriteLine(k);
}
}
1) Первое трехзначное делится на 4, значит третья цифра 0,4 или 8(_20,_24,_28)
2) Третья с шестой не делятся на 5, шестая 1, так что третья не может быть 4. Итого: третья 0 или 8
3) Сумма цифр 29. Известны 2,9 и 1. Неизвестны 3. Если одна из них ноль, то общая сумма максимум 2+9+1+0+8+7 = 27, что недотягивает до 29. Итого: Третья = 8
4) Сумма известных цифр = 2+8+9+1 = 20. Значит сумма 2х неизвестных = 9. Т.к. цифры не повторяются, у нас остаются варианты двух неизвестных 3+6 и 4+5
5) Образовать сумму соседних получится, если первая 5 или пятая 6. четвертая + пятая из оставшихся чисел 7 никак не дадут. Пятая шесть не подходит под условие "все четные вместе". Итого 528491 или 528941(не подходит по "четные вместе")
6) Итого 528491


Школьный уголок
2.3K постов4K подписчиков
Правила сообщества
Можно:
Писать всё, что можно отнести к школе.
...
Нельзя:
Нарушать правила Пикабу.