Вход


Главная страница >> Учебный процесс >> Задачник >> Олимпиадные задачи (с решениями) >> Арифметика >> Номер 33

[Назад]    [Содержание ]    [Вперед]

  


Номер 33


  Условие: Номер 33


Задача 32. Вычислить значение полинома f(x)=ax4+bx3+cx2+dx+e для x=1, ..., 10000, используя не более 51000 операций *,+.

  Решение задачи: Номер 33


Решение задачи 32. Пусть f(x)=ax4+bx3+cx2+dx+e. Выразим f(x+1) через f(x): f(x+1)=f(x)+(4ax3+(6a+3b)x2+(4a+3b+2c)x+(a+b+c+d)=f(x)+g(x), где g(x)=Ax3+Bx2+Cx+D. Поступим аналогично и с g(x): g(x+1)=g(x)+(3Ax2+(3A+2B)x+(A+B+C))=g(x)+h(x), где h(x)=A'x2+B'x+C'. Далее: h(x+1)=h(x)+(2A'x+(A'+B'))=h(x)+p(x), где p(x)=A"x+B". p(x+1)=p(x)+A". Имеем: f(x+4)=f(x+3)+g(x+3) g(x+3)=g(x+2)+h(x+2) h(x+2)=h(x+1)+p(x+1) p(x+1)=p(x)+A". Отсюда получаем фрагмент программы: < BLOCK 1 > x:=5; repeat P:=P+A2; H:=H+P; G:=G+H; F:=F+G; writeln(x,F); x:=x+1; until x=10001; Итак, на каждое значение, начиная с 5, тратится 5 операций сложения. Остается около 1000 операций на вычисление f(1), f(2), f(3), f(4), для инициализации P:=p(1); H:=h(2); G:=g(3); (F:=f(4)); и на вычисление A2:=A". Ясно, что 1000 операций хватит на все эти вычисления.

Назад



[Назад]    [Содержание ]    [Вперед]

  


  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017