Zhenek #741 5 ноября 2018 (изменено) Ответ-то где лол. Для трапеции.челик же просил задачу, не хотел ему руинитьладно вот. медиана треугольника ABC = 7+7/(10/4 -1) = 7 +14/3= 35/3у треугольника ABC известна медиана 35/10, строна 10 и угол 45, откуда площадь 500/9площадь трапеции = (1-16/100)*500/9 = 140/3хз мог в расчётах ошибиться Вголос, я тупо не понимаю, откуда у тебя все эти числа взялись: для медианы и площади треугольника, но ответ почему-то правильный. Я знаю решение двумя способами. 1 - через легкую систему из 4х уравнений на основе подобий + теоремы косинусов. 2 - через параллельный перенос, теорему косинусов ну и там изи дальше.Хз чё у тебя за формулы и как ты вообще считал значение медианы, уже молчу о площади через медиану ... почему-то никогда не слышал от такой формуле. Изменено 5 ноября 2018 пользователем Zhenek Цитата WoW POE Поделиться сообщением Ссылка на сообщение
E1azor #742 5 ноября 2018 (изменено) (0!+0!+0!)! = 6(1+1+1)!*1(2+2)!/2/2(3!+3!+3!)/34!/4+4-4(5*5+5)/56/6*(6*6)^0.5(7*7-7)/78-(8+8)/29^0.5+9^0.5+9-9(10*10-10)/10 откуда у тебя все эти числа взялись: для медианы и площади треугольникану медиана понятно что проходит через 0, и описанные окружности с центрами в серединах гипотенуз проходят через точку О, откуда находим отрезок 2+5, а целиком медиану через подобие треугольников.Формулу тоже не нашол через медиану, сторону и угол, но можно достроить до параллелограмма и воспользоваться формулами для вычисления диагоналей или ещё какнить.хуёвое офк решение, но какое есть Изменено 5 ноября 2018 пользователем E1azor Цитата всё что пишу -- шизофренический бред Поделиться сообщением Ссылка на сообщение
Zhenek #743 5 ноября 2018 А, всё, я понял. С медианами вообще круто получилось, я и забыл про свойство медиан для прямоугольного треугольника. Но, да, не это решение я ждал офк. Цитата WoW POE Поделиться сообщением Ссылка на сообщение
E1azor #744 6 ноября 2018 (изменено) уже минут 20 застрял, нихуя не вижу, кто поможет? за пятеру офк 6 2 1 9 5 3 8 4 7 9 5 8 4 1 7 3 2 6 4 3 7 2 8 6 1 5 9 1 7 6 3 4 2 5 9 8 2 9 5 7 6 8 4 1 3 3 8 4 1 9 5 6 7 2 5 4 3 8 7 9 2 6 1 7 6 2 5 3 1 9 8 4 8 1 9 6 2 4 7 3 5 #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" struct Sudoku { #define N 9 #define M 3 unsigned int m[N][N]; unsigned int r[N][N]; int copyCount; int change_rCount; void init(const char *fn) { copyCount = 0; change_rCount = 0; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { m[i][j] = (1 << N) - 1; } FILE *f = fopen(fn, "r"); for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { fscanf(f, "%u", &r[i][j]); if (r[i][j] == 0) r[i][j] = N; else r[i][j]--; } fclose(f); } void outAnswer(const char *fn1, const char *fn2) { FILE *out1 = fopen(fn1, "w"); FILE *out2 = fopen(fn2, "w"); int count = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { //fprintf(out1, "%4u", m[i][j]); unsigned int mm = m[i][j]; for (int bitIndex = 0; bitIndex < N; bitIndex++) { int bitValue = mm % 2; fprintf(out1, "%u", bitValue); mm /= 2; } fprintf(out1, " "); unsigned int res = r[i][j]; if (res == N) res = 0; else res++; fprintf(out2, "%2u", res); } fprintf(out1, "\n"); fprintf(out2, "\n"); } fclose(out2); fclose(out1); } bool solve() { // инициализируем массивы в соответствии с исходными данными for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { if (r[i][j] != N) { unsigned int mask = 1 << r[i][j]; if ((m[i][j] >> r[i][j]) % 2 == 0) // это значение исключено - явно ошибка return true; if (change_r(i, j, r[i][j])) return true; } } // вызываем перебор return enumeration(); } bool enumeration() { // смотрим, в каком квадратике среди не определённых меньше всего вариантов int min, min_i, min_j; findMin(min, min_i, min_j); //printf("Min: NumberOfOnes[%d][%d] = %d\n", min_i, min_j, min); if (min == 1) return false; // решение найдено else { unsigned int mm = m[min_i][min_j]; for (int bitIndex = 0; bitIndex < N; bitIndex++) { int bitValue = mm % 2; if (bitValue == 1) { // один из вариантов copyCount++; Sudoku newState = *this; unsigned int mask = (1 << bitIndex); // маска для обнуления всех битов кроме bitIndex if (newState.change_m(min_i, min_j, mask)) { // не пошло, сохраняем количество вызовов (solve() не вызывается) change_rCount = newState.change_rCount; } else { if (newState.enumeration()) { // не пошло, сохраняем количество вызовов copyCount = newState.copyCount; change_rCount = newState.change_rCount; } else { // решение найдено *this = newState; return false; } } } mm >>= 1; } } // решения нет return true; } // нахождение ячейки с меньким количеством вариантов void findMin(int &min, int &min_i, int &min_j) { min = N + 1; // заведомо большое for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { if (r[i][j] == N) // минимум среди не определённых { unsigned int mm = m[i][j]; int NumberOfOnes = 0; for (int bitIndex = 0; bitIndex < N; bitIndex++) { int bitValue = mm % 2; NumberOfOnes += bitValue; mm >>= 1; } if (NumberOfOnes < min) { min = NumberOfOnes; min_i = i; min_j = j; if (min == 2) break; // 2 - идеальный вариант } } } if (min == N + 1) { // неопределённых нет, значит решение найдено min = 1; min_i = 0; min_j = 0; } } // изменение значения элемента массива r bool change_r(int i, int j, unsigned int value) { change_rCount++; //printf("r[%d][%d] = %u\n", i, j, value + 1); r[i][j] = value; unsigned int mask = ((1 << N) - 1) - (1 << value); // маска для обнуления бита номер value // строка и столбец for (int l = 0; l < N; l++) { if (l != j) { if(change_m(i, l, mask)) // исключение бита в m[i][l] return true; } if (l != i) { if(change_m(l, j, mask)) // исключение бита в m[l][j] return true; } } // квадрат int qi1 = i - i % M; int qj1 = j - j % M; for (int qi = qi1; qi < qi1 + M; qi++) for (int qj = qj1; qj < qj1 + M; qj++) { if (qi != i || qj != j) { if(change_m(qi, qj, mask)) // исключение бита в m[qi][qj] return true; } } return false; } // изменение значения элемента массива m bool change_m(int i, int j, unsigned int mask) { unsigned int newmij = (m[i][j] & mask); if (newmij == m[i][j]) return false; else { m[i][j] = newmij; for (int bitIndex = 0; bitIndex < N; bitIndex++) { int bitValue = newmij % 2; if (bitValue == 1) { if (newmij == 1) { // исключены все варианты кроме 1 - нашли ответ в ячейке if(change_r(i, j, bitIndex)) return true; } return false; } newmij >>= 1; } // все биты 0 быть не могут => решения нет return true; } } }; int main() { Sudoku s; s.init("in.txt"); if(s.solve()) printf("no answer\n"); else s.outAnswer("out_m.txt", "out_r.txt"); printf("copyCount = %d\n", s.copyCount); printf("change_rCount = %d\n", s.change_rCount); return 0; } copyCount = 16 change_rCount = 203 не ручаюсь за правильность ответа, лень проверять возникает вопрос, можно ли сократить перебор?проверку на единственный бит наверно можно через логарифм по основанию 2 сделать - если бит 1, то целое получится, хз правда что быстрееа количество бит в числе только в цикле что ли считать можно конечно 3-й массив завести но тогда совсем не красиво будет, и так 2 уже когда можно 1-м массивом обойтись Изменено 6 ноября 2018 пользователем E1azor Цитата всё что пишу -- шизофренический бред Поделиться сообщением Ссылка на сообщение
E1azor #745 6 ноября 2018 решить судоку прога офк решает 8 0 0 0 0 0 0 0 0 0 0 3 6 0 0 0 0 0 0 7 0 0 9 0 2 0 0 0 5 0 0 0 7 0 0 0 0 0 0 0 4 5 7 0 0 0 0 0 1 0 0 0 3 0 0 0 1 0 0 0 0 6 8 0 0 8 5 0 0 0 1 0 0 9 0 0 0 0 4 0 0 8 1 2 7 5 3 6 4 9 9 4 3 6 8 2 1 7 5 6 7 5 4 9 1 2 8 3 1 5 4 2 3 7 8 9 6 3 6 9 8 4 5 7 2 1 2 8 7 1 6 9 5 3 4 5 2 1 9 7 4 3 6 8 4 3 8 5 2 6 9 1 7 7 9 6 3 1 8 4 5 2 мгновенно, ноcopyCount = 1850change_rCount = 17301 то есть много перебирать приходится, ну а хуле, слишком тупой перебор (с единственной стратегией выбора: ставим цифру если, глядя на строку, столбец и малый квадрат, все остальные цифры исключены) задача оказалась нп-жирной хуетой (придумывай сколько хочешь стратегий всё равно будешь в говне), поэтому оставляю как есть. На счёт подсчёта количества ненулевых битов числа. Числа маленькие поэтому можно просто таблицу составить и цикл будет не нужен, сразу ответ на тебе. Как же приятно отдохнут во время перерыва в этой теме. Спасибо, Женёк. Цитата всё что пишу -- шизофренический бред Поделиться сообщением Ссылка на сообщение
Montana #746 6 ноября 2018 Ты весь кайф ломаешь со своим перебором. Дай гуманитариям мозги в судоку напрячь Цитата Поделиться сообщением Ссылка на сообщение
sfc.pups #747 6 ноября 2018 Хз, на 1 судоку своими мозгами я только дошел до шага: единственное решение (с 2 и 5).http://www.sudokuwiki.org/sudoku.htm?bd=020053007950017020400280000106040000205068410300190000500070201702031080010020730 2 судоку от елазора этот калькулятор только методом перебора может решить. Цитата Поделиться сообщением Ссылка на сообщение
E1azor #748 6 ноября 2018 этот калькулятор только методом перебора может решить ебать, рили Number of solutions: 1(recursed 2068781 times) у меня и то пизже перебор значит, хотя туда только 1 стратегия заложенанаверно они просто ни одной стратегии не закладывали, шок Цитата всё что пишу -- шизофренический бред Поделиться сообщением Ссылка на сообщение
Kurku #749 6 ноября 2018 Тропечко чёт вгилос, чел заказал задачку по геометрии и ушёл в закат )Ну... Не всегда же есть время %) Цитата Поделиться сообщением Ссылка на сообщение
half_cat #750 6 ноября 2018 А че с физикой то решили. 2пи*sqrt(2) правильно ведь. Цитата Поделиться сообщением Ссылка на сообщение
Zhenek #751 6 ноября 2018 (изменено) Так. С кирпичами: C двумя воинами от элазора я хз честно, либо условий мало, либо я усложняю. 37. Даны 2 фиксированные подставки, длина которых бесконечна, а расстояние межди ними - чуть больше, чем максимальная мера вашего ботинка (ширина, высота, длина - похуй, главное, что нельзя положить ботинок между подставками, чтобы он не упал), ваш ботинок и стандартный лист А4, ширина которого больше, чем расстояние между подставками, Как сделать так, чтобы лист удержал ботинок на себе целиком и не провалился между подставками? Изменено 6 ноября 2018 пользователем Zhenek Цитата WoW POE Поделиться сообщением Ссылка на сообщение
E1azor #752 6 ноября 2018 (изменено) ^^не нравится, что ответ противоречит здравому смыслу? ^условий вроде достаточносуществует единственное поведение мастера, при котором он в среднем меньше всего обосрётсяпододвинуть подставки или лист закрепитьну а если подставки плоские а ботинок 3д, то просто поставить, никуда он не провалится нихуя не понял условие хмм, если изменить сообщение, а потом отправить новое чтобы они склеились, то изменится время высера поста Изменено 6 ноября 2018 пользователем E1azor Цитата всё что пишу -- шизофренический бред Поделиться сообщением Ссылка на сообщение
Zhenek #753 6 ноября 2018 (изменено) Нет. Ок обновлю.Оранжевая бумага. 2 чёрные подставки на одном уровне (извините, не старался). Ботинок офк лежит на бумаге ЦЕЛИКОМ. Вопрос: что надо сделать чтобы ботинок не упал вниз, если есть только ботинок, бумага и 2 недвигающиеся подставки.Задача без выебонов. Иди тупо на кухне попробуй с кастрюлями в качестве подставок и айфона вместо ботинка, я хз. Изменено 6 ноября 2018 пользователем Zhenek Цитата WoW POE Поделиться сообщением Ссылка на сообщение
E1azor #754 6 ноября 2018 (изменено) подуть снизу или выключить гравитацию шнурки можно использовать или раскурочивать ботинок? боком можно положить? Изменено 6 ноября 2018 пользователем E1azor Цитата всё что пишу -- шизофренический бред Поделиться сообщением Ссылка на сообщение
Тигрёнок #755 6 ноября 2018 Сложить вдвое и попрыскать водой Цитата Поделиться сообщением Ссылка на сообщение
HAPKOMAH #756 6 ноября 2018 Рыли просто крайне плотно сложить бумагу и даже в подобный тяжелый ботинок, как на скрине, если вставить в край подошвы (нарастить недостающую длину до поставкт), Можно запросто поймать равновесие Цитата . Поделиться сообщением Ссылка на сообщение
Zhenek #757 6 ноября 2018 (изменено) ^^^ нет, говорю же, можно на кухне пойти сделать, тупо irl задача без выебонов. Нет шнурков. Боком тоже падает офк ^^ не понял ^ не, никаких вставляшек. Произвольный ботинок Изменено 6 ноября 2018 пользователем Zhenek Цитата WoW POE Поделиться сообщением Ссылка на сообщение
E1azor #758 6 ноября 2018 (изменено) если мера ботинка чуть меньше, то рили если бумагу сложить много раз и подложить под край ботинка с одной стороны то может проканать Изменено 6 ноября 2018 пользователем E1azor Цитата всё что пишу -- шизофренический бред Поделиться сообщением Ссылка на сообщение
Zhenek #759 6 ноября 2018 (изменено) Нет. Произвольные габариты ботинка. Задача для строителей и инженеров так-то Изменено 6 ноября 2018 пользователем Zhenek Цитата WoW POE Поделиться сообщением Ссылка на сообщение
E1azor #760 6 ноября 2018 если бумаги всего 1 лист то максимум из неё можно сделать верёвку, хз Цитата всё что пишу -- шизофренический бред Поделиться сообщением Ссылка на сообщение