Определённо нельзя назвать это верным решением, но как на счёт немного быдлокода
using namespace std; unsigned long Sum(){ unsigned int mas[23]; mas[0] = 1; for (int i = 1;i<23;++i) { mas[i] = 0; } unsigned long chislo1 = 10000; unsigned long chislo2 = 0; unsigned long chislo3 = 0; unsigned long res = 0; unsigned int temp; bool addOne; unsigned int tr; while (chislo1!= 100000) { cout << chislo1 << chislo2 << chislo3 << endl; addOne = false; temp = 0; tr = 21; for (int i = 0; i < 23; ++i) { temp += mas[i]; } if (temp == 4) ++res; mas[22] += 1; if (mas[22] == 10) addOne = true; while (addOne) { mas[tr] += 1; if (mas[tr] == 10) --tr; else addOne = false; } ++chislo3; if (chislo3 == 1000000000) { ++chislo2; chislo3 = 0; if (chislo2 == 1000000000) { ++chislo1; chislo2 = 0; } } } return res; } int main() { cout << endl << endl << "Sum " << Sum(); return 0; }` отвечен 26 Янв '14 1:37 goodwin332 |
См. решение аналогичной задачи здесь. Если будут вопросы по решению, то их там же можно и задать.
я с сочетаниями не очень понимаю, можно пожалуйста конкретнее для моей задачи, спасибо!
@Kiwi: если Вы не знакомы с конструкцией сочетаний с повторениями, то ничего страшного. Можно объяснить на другом языке. Но обычные сочетания, которые $%C_n^m$% -- это вещь, которая здесь так или иначе требуется. Это надо изучить, прежде чем решать задачи более сложного типа.
у меня получилось 92.
@Kiwi Ответ 92 не правильный. Значительно больше. Можете попробовать сделать по аналогии с этим решением math.hashcode.ru/questions/30654/
у меня также получается, в итоге сколько должно получится?
@Kiwi: ответ 92 наводит на мысль, что сначала выбиралось 23 способами одно из мест, а потом на него записывалась одна из цифр от 1 до 4. Таким способом формируются 23-разрядные числа, у которых все цифры кроме одной являются нулями. Это совсем не то, о чём идёт речь в условии.