- /* package whatever; // don't place package name! */ 
-   
- import java.util.*; 
- import java.lang.*; 
- import java.io.*; 
-   
- /* Name of the class has to be "Main" only if the class is public. */ 
- class Ideone 
- { 
- 	public static double f (double x) { 
- 			return Math- . sin(- x *- x +2*- x );
 
- 	} 
-   
- 	{ 
- 		Scanner in  = new-  Scanner (System- . in);
-   
- 		double a = in.nextDouble();//Нижний и верхний пределы интегрирования (a, b), погрешность (eps). 
- 		double b = in.nextDouble(); 
- 		double eps = in.nextDouble(); 
-   
- 		double I=eps+1, I1=0;//I-предыдущее вычисленное значение интеграла, I1-новое, с большим N. 
-   
- 		for (int-  N =2; (- N <=4)||(Math- . abs(- I1 -- I )>- eps );-  N *=2){
 
- 			double h, sum2=0, sum4=0, sum=0; 
- 			h=(b-a)/(2*N);//Шаг интегрирования. 
- 			for (int i=1; i<=2*N-1; i+=2){    
- 				sum4+=f(a+h*i);//Значения с нечётными индексами, которые нужно умножить на 4. 
- 				sum2+=f(a+h*(i+1));//Значения с чётными индексами, которые нужно умножить на 2. 
- 			} 
- 			sum=f(a)+4*sum4+2*sum2-f(b);//Отнимаем значение f(b) так как ранее прибавили его дважды.  
- 			I=I1; 
- 			I1=(h/3)*sum; 
- 		} 
- 	} 
- } 
				LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgZG91YmxlIGYgKGRvdWJsZSB4KSB7CgkJCXJldHVybiBNYXRoLnNpbih4KngrMip4KTsJCgl9CgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJU2Nhbm5lciBpbiA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CgkJCgkJZG91YmxlIGEgPSBpbi5uZXh0RG91YmxlKCk7Ly/QndC40LbQvdC40Lkg0Lgg0LLQtdGA0YXQvdC40Lkg0L/RgNC10LTQtdC70Ysg0LjQvdGC0LXQs9GA0LjRgNC+0LLQsNC90LjRjyAoYSwgYiksINC/0L7Qs9GA0LXRiNC90L7RgdGC0YwgKGVwcykuCgkJZG91YmxlIGIgPSBpbi5uZXh0RG91YmxlKCk7CgkJZG91YmxlIGVwcyA9IGluLm5leHREb3VibGUoKTsKCQkKCQlkb3VibGUgST1lcHMrMSwgSTE9MDsvL0kt0L/RgNC10LTRi9C00YPRidC10LUg0LLRi9GH0LjRgdC70LXQvdC90L7QtSDQt9C90LDRh9C10L3QuNC1INC40L3RgtC10LPRgNCw0LvQsCwgSTEt0L3QvtCy0L7QtSwg0YEg0LHQvtC70YzRiNC40LwgTi4KCQkJCgkJZm9yIChpbnQgTj0yOyAoTjw9NCl8fChNYXRoLmFicyhJMS1JKT5lcHMpOyBOKj0yKXsKCQkJZG91YmxlIGgsIHN1bTI9MCwgc3VtND0wLCBzdW09MDsKCQkJaD0oYi1hKS8oMipOKTsvL9Co0LDQsyDQuNC90YLQtdCz0YDQuNGA0L7QstCw0L3QuNGPLgoJCQlmb3IgKGludCBpPTE7IGk8PTIqTi0xOyBpKz0yKXsgICAKCQkJCXN1bTQrPWYoYStoKmkpOy8v0JfQvdCw0YfQtdC90LjRjyDRgSDQvdC10YfRkdGC0L3Ri9C80Lgg0LjQvdC00LXQutGB0LDQvNC4LCDQutC+0YLQvtGA0YvQtSDQvdGD0LbQvdC+INGD0LzQvdC+0LbQuNGC0Ywg0L3QsCA0LgoJCQkJc3VtMis9ZihhK2gqKGkrMSkpOy8v0JfQvdCw0YfQtdC90LjRjyDRgSDRh9GR0YLQvdGL0LzQuCDQuNC90LTQtdC60YHQsNC80LgsINC60L7RgtC+0YDRi9C1INC90YPQttC90L4g0YPQvNC90L7QttC40YLRjCDQvdCwIDIuCgkJCX0KCQkJc3VtPWYoYSkrNCpzdW00KzIqc3VtMi1mKGIpOy8v0J7RgtC90LjQvNCw0LXQvCDQt9C90LDRh9C10L3QuNC1IGYoYikg0YLQsNC6INC60LDQuiDRgNCw0L3QtdC1INC/0YDQuNCx0LDQstC40LvQuCDQtdCz0L4g0LTQstCw0LbQtNGLLiAKCQkJST1JMTsKCQkJSTE9KGgvMykqc3VtOwoJCX0KCQlTeXN0ZW0ub3V0LnByaW50bG4oSTEpOwoJfQp9