задан 19 Янв '14 20:07

изменен 20 Янв '14 20:21

Deleted's gravatar image


126

См. решение аналогичной задачи здесь. Если будут вопросы по решению, то их там же можно и задать.

(19 Янв '14 20:14) falcao

я с сочетаниями не очень понимаю, можно пожалуйста конкретнее для моей задачи, спасибо!

(19 Янв '14 20:23) Kiwi

@Kiwi: если Вы не знакомы с конструкцией сочетаний с повторениями, то ничего страшного. Можно объяснить на другом языке. Но обычные сочетания, которые $%C_n^m$% -- это вещь, которая здесь так или иначе требуется. Это надо изучить, прежде чем решать задачи более сложного типа.

(19 Янв '14 20:43) falcao

у меня получилось 92.

(19 Янв '14 20:52) Kiwi

@Kiwi Ответ 92 не правильный. Значительно больше. Можете попробовать сделать по аналогии с этим решением math.hashcode.ru/questions/30654/

(19 Янв '14 21:14) aid78

у меня также получается, в итоге сколько должно получится?

(19 Янв '14 21:38) Kiwi

@Kiwi: ответ 92 наводит на мысль, что сначала выбиралось 23 способами одно из мест, а потом на него записывалась одна из цифр от 1 до 4. Таким способом формируются 23-разрядные числа, у которых все цифры кроме одной являются нулями. Это совсем не то, о чём идёт речь в условии.

(19 Янв '14 22:02) falcao
показано 5 из 7 показать еще 2
10|600 символов нужно символов осталось
0

Определённо нельзя назвать это верным решением, но как на счёт немного быдлокода

`#include <iostream>

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

10|600 символов нужно символов осталось
Ваш ответ

Если вы не нашли ответ, задайте вопрос.

Здравствуйте

Математика - это совместно редактируемый форум вопросов и ответов для начинающих и опытных математиков, с особенным акцентом на компьютерные науки.

Присоединяйтесь!

отмечен:

×29

задан
19 Янв '14 20:07

показан
1223 раза

обновлен
26 Янв '14 1:37

Отслеживать вопрос

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии

Дизайн сайта/логотип © «Сеть Знаний». Контент распространяется под лицензией cc by-sa 3.0 с обязательным указанием авторства.
Рейтинг@Mail.ru