Так как чертёжник оказался в начальной точке, значит после цикла у нас должно получиться число, обратное последней команде. В данном случае последняя команда такая: (8, -2), следовательно должны получить (-8, 2). Возьмём начальную координату (0, 0) т.к. так проще считать.
Посмотрим где будет чертёжник после нескольких выполнений цикла После первого по координатам х: 0 -1 + 0 + (-3) = -4 После первого по координатам y: 0 -4 + 2 + B = -2 + B
по оси Х нам не хватает ещё одного цикла, значит считаем после второго выполнения цикла После второго по координатам x: -4 * 2 = -8 После второго по координатам y: (-2 + B) * 2 = -4 + 2B
Кол-во во "повтори" мы нашли. Это 2 т.к. при двух прокатах цикла мы получаем х= -8, что нам и надо чтобы вернуться в начальную точку.
Осталось найти y. Согласно последней команде, y должен быть обратным -2, следовательно y = 2, составим уравнение и найдём B. 2 = -4 + 2B -2B = -4 - 2 -2B = -6 2B = 6 B = 3
#include <cmath>
using namespace std;
long Amt(int *hours) {
long p=1;
for(int i=0;i<*hours/3;i++) p*=2;
return(p);
}
int main() {
setlocale(LC_ALL, "RUS");
int i,T;
cout<<"Введите предельное количество часов: ";
cin>>T;
for(i=3;i<=T;i+=3)
{cout<<"Время, час "<<i<<", амеб: "<<Amt(&i)<<endl;}
system("PAUSE");
}
Тестовое решение:
Введите предельное количество часов: 60
Время, час: 3, амеб: 2
Время, час: 6, амеб: 4
Время, час: 9, амеб: 8
Время, час: 12, амеб: 16
Время, час: 15, амеб: 32
Время, час: 18, амеб: 64
Время, час: 21, амеб: 128
Время, час: 24, амеб: 256
Время, час: 27, амеб: 512
Время, час: 30, амеб: 1024
Время, час: 33, амеб: 2048
Время, час: 36, амеб: 4096
Время, час: 39, амеб: 8192
Время, час: 42, амеб: 16384
Время, час: 45, амеб: 32768
Время, час: 48, амеб: 65536
Время, час: 51, амеб: 131072
Время, час: 54, амеб: 262144
Время, час: 57, амеб: 524288
Время, час: 60, амеб: 1048576
Для продолжения нажмите любую клавишу . . .