Программа должна считать, сколько раз в строке S встречается подстрока "12". Какой оператор надо вставить вместо многоточия? Вводите ответ без пробелов. int c = 0, p; while ( 1 ) { ... if ( p < 0 ) break; S.erase(0, p+2); c ++; }
Прочитав текст, можно легко понять, что проще всего "зацепиться" за его фрагмент "я учился на 12 и 11". Кроме того, нигде не встречается цифр, больших двойки, следовательно основание системы р может быть 3 и более. Допустим, что система оценок была пятибалльной. Пусть p=3, тогда 12(3)=3+2=5, 11(3)=4 и это похоже на реальные числа. При р=4 получаем 12(4)=6 и это уже нарушает наше допущение о пятибалльной системе. Но посмотрим, что даст предположение р=3. 12(3) лет - это 5. 122 года - это 3²+2×3+2 = 17 лет - нормальный возраст для поступления в вуз. 21(3) год - это 3×2+1 = 7 лет - вполне допустимый срок для начала преподавания. 220(3) лет = 2×3²+2×3 = 24 года - путешествие было не коротким... 10011(3) лет = 3⁴+3+1 = 85 лет - вполне почтенный возраст.
Обозначим количество попасть обратно в начальную вершину за n прыжков как A(n), а количество попасть в одну из двух других вершин как B(n) (очевидно, количество одинаково для обеих вершин). Тогда:
A(n) = 2*B(n-1) {находясь в одной из двух не-начальных вершин после n-1 прыжка, лягушка прыгает в начальную вершину} B(n) = A(n-1) + B(n-1) {лягушка прыгает либо из начальной, либо другой не-начальной}
A(1) = 0 B(1) = 1
Далее по формулам A B - n 0 1 - 1 2 1 - 2 2 3 - 3 6 5 - 4 10 11 - 5 22 21 - 6 42 43 - 7 86 85 - 8 170 9
ответ: 170
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку