Задача: В задаче задана функция и её разложение в ряд или произведение. Численно убедится в справедливости равенства, для чего для заданного значения аргумента [latex] x [/latex] вычислить левую его часть и разложение, стоящее в правой части, с заданной погрешностью [latex]\varepsilon\[/latex]. Испытать разложение на сходимость при разных значениях аргумента, оценить скорость сходимости, для чего вывести число … Continue reading
А116в
Задача. Даны натуральное число [latex]n[/latex], действительное число [latex]x[/latex]. Вычислить: [latex]\sum_{i=1}^{n}{\frac{x+cos(ix)}{2^{i}}}[/latex] Тесты. n x sum Комментарий 5 2 1.65 Пройден 10 10 9.67 Пройден 5 0 0.97 Пройден Все тесты проверены на wolframalpha. Код. C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <stdio.h> #include <math.h> using namespace std; int main() { int n; //описание переменных double x; scanf("%d %lf",&n,&x); //ввод условий double sum=0; double degree=1; for(int i=1;i<=n;i++) { degree=degree*2; //вычисление степеней 2 sum=sum+(x+cos(i*x))/degree; //вычисление суммы } printf("%4.2lf\n",sum); return 0; } |
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) { int n; //описание переменных double x; Scanner sc = new Scanner(System.in); n = sc.nextInt(); //ввод условий x = sc.nextDouble(); double sum=0; double degree=1; for(int i=1;i<=n;i++) { degree=degree*2; //вычисление степеней 2 sum=sum+(x+Math.cos(i*x))/degree; //вычисление суммы } System.out.printf("%4.2f\n",sum); } } |
Для решения данной задачи воспользуемся циклом for, также для упрощения вычислений (не считать [latex]2^{i}[/latex] каждый раз заново) введем … Continue reading
Ю11.16
Задача: Для заданной матрицы [latex]A(n, n)[/latex] найти обратную [latex]A^{-1}[/latex], используя итерационную формулу: [latex]A_{k}^{-1} = A_{k-1}^{-1}(2E-A A_{k}^{-1}),[/latex] где [latex]E[/latex] — единичная матрица, [latex]A_{0}^{-1} = E[/latex]. Итерационный процесс заканчивается, если для заданной погрешности [latex]\varepsilon[/latex] справедливо: [latex]\left| det(A A_{k}^{-1})-1 \right| \le \varepsilon[/latex] Анализ задачи: Прежде чем приступать к решению средствами языка C++, я создал прототип в системе компьютерной … Continue reading
А136л
Задача: Даны натуральное число [latex]n[/latex], действительные числа [latex]a_{1},\cdot \cdot \cdot ,a_{n}[/latex]. Вычислить: [latex]\sqrt{\left|a_{1}a_{2}\cdot \cdot \cdot a_{n} \right|}[/latex]. [latex]n[/latex] [latex]a_{1}[/latex] [latex]a_{2}[/latex] [latex]a_{3}[/latex] [latex]a_{4}[/latex] [latex]a_{5}[/latex] [latex]a_{6}[/latex] [latex]a_{7}[/latex] [latex]a_{8}[/latex] [latex]k[/latex] 4 -5 2 4 -3.6 — — — — 12 8 -5 0.2 -3.2 0.5 -1.25 20 2 80 80 3 4 4 0 — — — — — … Continue reading
А116д
Задача: Даны натуральное число [latex]n[/latex], действительное число [latex]x[/latex]. Найти: [latex]\prod_{k=1}^{n}(\frac{k}{k+1}-cos^k|x|)[/latex] Тесты: [latex]x[/latex] [latex]n[/latex] [latex]p[/latex] Комментарий 1 4 0.0212016 Пройден -4 3 -0.0779913 Пройден 50 16 0.0782772 Пройден Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> #include <math.h> using namespace std; int main() { int n; double x, p = 1; double cs, sc; cin >> x; cin >> n; cs = cos(fabs(x)); sc = cos(fabs(x)); for(int k = 1; k <=n; k++) { p*= (k / (k + 1)) - cs; cs*=sc; } cout << p << endl; return 0; } |
Для решения данной задачи создаем цикл, счетчик [latex]k[/latex] которого не превышает заданного [latex]n[/latex]. В самом цикле вычисляем произведение [latex]p[/latex] путем домножения новых множителей заданных формулой [latex]\frac{k}{k+1}-cos^k|x|[/latex] пока [latex]k[/latex] … Continue reading
А26
Задача: Найти площадь сектора, радиус которого равен 13.7, а дуга содержит заданное число радиан [latex] \varphi[/latex]. Тесты: Ввод Вывод Результат 1 93.845 Площадь найдена -1 Неверный ввод Неправильные данные, подсчет невозможен 0.7 65.691 Площадь найдена 8.36 784.544 Площадь найдена 0 Неверный ввод Неправильные данные, подсчет невозможен 3.14 294.673 Площадь найдена Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> using namespace std; int main() { double r = 13.7; //заданный радиус double radian; //угол, вводимый вручную double square; //площадь, выводимая на экран printf("Введите число радиан дуги:"); scanf("%lf", &radian); if(radian <= 0) { printf("Неверный ввод \n"); } else { square = radian/2 * (r*r); printf("%5.3lf \n",square); } return 0; } |
Решение: Площадь сектора … Continue reading
A106
Даны действительные числа [latex]a, b[/latex], натуральное число [latex]n(b>a) [/latex]. Получить [latex](f_1+…+f_n)h[/latex], где [latex]h=\frac{b-a}{n}[/latex], [latex]f_i=\frac{a+(i-\frac{1}{2})h}{1+(a+(i-\frac{1}{2})h)^{2}}[/latex] a b n h f Комментарий 5 7 0 — — Введенное ‘n’ не натуральное 17 10 15 — — Первое введенное число больше второго 47.421 57.421 5 2 1.912507e-01 Пройден 3 12 6 1.5 1.330323e+00 Пройден 1 5 … Continue reading
А165ж
Задача Даны действительные числа [latex]a_{1},a_{2}[/latex] … Известно, что [latex]a_{1}>0[/latex] и что среди [latex]a_{2}, a_{3}[/latex] … есть хотя бы одно отрицательное число. Пусть [latex]a_{1},\ldots,a_{n}[/latex] — члены данной последовательности, предшествующие первому отрицательному члену ( [latex]n[/latex] заранее неизвестно). Получить: [latex]a_{1}a_{2}+a_{2}a_{3}+\ldots+a_{n-1}a_{n}+a_{n}a_{1}[/latex] . Тесты: Введенные числа Результат Комментарий 2 3 4 -5 26 пройден 6 0 45 3 -1 … Continue reading
А116е
Вычислить [latex] \prod_{i=1}^{n}{\frac{(1-x)^{i+1}+1}{((i-1)!+1)^2}} [/latex] Числа [latex] n [/latex] и [latex] x [/latex] вводятся с клавиатуры. n x Ответ 1 3 1.25 2 3 -2.1875 3 3 -4.13194
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> using namespace std; int main() { double pro = 1;// искомое произведение int n,x; cin >> n >> x;//Вводим числа double v = 1-x,u = 1;//v-это у нас 1-х, которое возводится в степень, а u-это факториал v*=1-x; pro*=(v+1)/((1+1)*(1+1)); for(int i = 2;i <= n;i++) { v*=(1-x);u*=i-1; pro*=(v+1)/((u+1)*(u+1)); } cout << pro; return 0; } |
Вводим n и x типа int. Инициализируем переменные v=1-x и u=1 типа double. Присваем значение переменной pro, при n=1. Запускаем цикл от 2 до n в котором увеличиваем факториал … Continue reading
Ю4.13
Задача. Дан массив [latex]A(n)[/latex]. Все положительные его элементы поместить в начало массива [latex]B(n)[/latex], а отрицательные элементы- в начало массива [latex]C(n)[/latex]. Подсчитать количество тех и других. Входные данные 3 -1 2 0 Выходные данные 1 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> using namespace std; int main() { int n=0,otr=0,pol=0; scanf("%d",&n);//размеры массива double A[n],B[n],C[n];//создаем три массива for(int i=0;i<n;i++)// цикл для ввода значений массива и сортировки { cin >> A[i]; A[i]>=0?B[pol++]=A[i]:C[otr++]=A[i];//В данной строке команда printf используется вместо двух ifов,чтобы было приятнее глазу, Если элемент из массива А положительный,то в массив В добавляем новый элемент и увеличиваем счетчик на 1, а если отрицательно, то в массив С } cout << "Negative " << otr << " Positive " << pol << endl;//выводим количество отрицательных и положительных чисел return 0; } |
Заводим счетчик для отрицательных и положительных чисел,а также переменную для количества элементов массива типа [latex]int[/latex]. Читаем количество элементов и … Continue reading
Ю3.24
Задача. Композиция [latex]n[/latex]- ого порядка [latex]f^{[n]}(x)[/latex] функции [latex]f(x)[/latex] назовем результат [latex]n[/latex]- кратного вычисления функции [latex]f [/latex], то есть [latex]f^{[1]}(x)=f(x)[/latex], [latex]f^{[ 2]}(x)=f(f(x))[/latex], и так далее. Для заданных [latex]n[/latex] и [latex]x[/latex] вычислить [latex] (expln)^{[n]} (x)[/latex] и [latex] exp^{[n]} ln^{[n]} (x)[/latex], результаты сравнить с [latex] x[/latex], то есть вывести значения аргумента, композиции функции и разности между ними. [latex]x[/latex] … Continue reading
А137е(а)
Даны натуральные [latex] n[/latex], действительные [latex] a_{1}…a_{n}[/latex]. Вывести: [latex] a_1+1!, a_2 +2!, …, a_n+n![/latex]. Input : 1 2 3 4 Output: 2.00 4.00 9.00 28.00 Input : 0.1 0.2 0.3 0.4 Output: 1.10 2.20 6.30 24.40
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> using namespace std; int main() { int i=1; double a,fact=1.0; while(scanf("%lf",&a)!=EOF)//читаем поток { fact*=i;//увеличиваем факториал printf("%.2lf ",(a+fact));//выводим сумму цифры из потока и факториала i++;//увеличиваем i для увеличения факториала каждый раз при проходе цикла } return 0; } |
Описываем переменную факториала и переменную из потока типа [latex]double[/latex]. Запускаем цикл [latex]while[/latex], у которого в условии ставим: … Continue reading
А59з
Задача. Даны действительные числа [latex]x, y[/latex]. Определить, принадлежит ли точка с координатам [latex]x, y[/latex] заштрихованной части плоскости (рис. ниже).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <iostream> #include <math.h> using namespace std; int main() { double x,y; cin >> x >> y; if(y>=(-2)&&fabs(x)<=1&&y<=fabs(x))//проверяем лежит ли у выше нижней линии,потом ограничен ли х он прямыми 1 и -1,потом диагонали-это функция у=|x| cout << "Yes" << endl; else cout << "No" << endl; return 0; } |
Объявляем две переменные [latex]x,y[/latex] типа [latex]double[/latex] (точки могут иметь дробные координаты). Читаем координаты точки. В условии проверяем три пункта: Лежит ли [latex]y[/latex] выше [latex]-2[/latex] [latex](y>=-2)[/latex]. Находится ли точка между двумя прямыми [latex](|x|<=1)[/latex]. Лежит ли точка ниже диагоналей,описанных … Continue reading
e-olymp 3. Спичечная модель
Задача. Профессор Самоделкин решил изготовить объемную модель кубиков из спичек, используя спички для рёбер кубиков. Длина ребра каждого кубика равна одной спичке. Для построения модели трех кубиков он использовал [latex]28[/latex] спичек. Какое наименьшее количество спичек нужно Самоделкину для построения модели из N кубиков? Все числа в задаче не превышают [latex]2*10^9[/latex]. Технические условия Входные данные Одно число [latex] N … Continue reading
А165б
Задача: Даны действительные числа [latex]{a}_{1},{a}_{2},\dots[/latex] . Известно, что [latex]{a}_{1}>0[/latex] и что среди [latex]{a}_{2},{a}_{3},\dots[/latex] есть хотя бы одно отрицательное число. Пусть [latex]{a}_{1},\dots,{a}_{n}[/latex] – члены данной последовательности, предшествующие первому отрицательному члену (n заранее неизвестно). Получить: б) [latex]{a}_{1}{a}_{2}\dots{a}_{n}[/latex]; Тесты: Последовательность [latex]{a}_{1}{a}_{2}\dots{a}_{n}[/latex] Комментарий 1 2 3 4 -1 2 24 Пройден 0.5 0.4 0.3 0.2 0.1 -0.1 -0.2 -0.3 0.0012 Пройден … Continue reading
Ю11.12
Задача: Интерполяционный многочлен Лагранжа. Значения функции [latex]y=f\left(x\right)[/latex] заданы таблично в массиве [latex]Y\left(x\right)[/latex] при соответствующих значениях аргумента в упорядоченном массиве [latex]X\left(x\right)[/latex]. Найти значение функции в произвольной точке [latex]x[/latex] по формуле Лагранжа: [latex]y={L}_{n}\left(x\right)=\sum _{i=1}^{n}{{y}_{i}\prod _{\underset{j\neq i}{j=1}}^{n}{\frac{x-{x}_{j}}{{x}_{i}-{x}_{j}}}}[/latex] Вводимые значения: X: -1 0 1 2 Y: 1 2 3 -1 Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <iostream> #include <vector> using namespace std; double LP(double x, vector<double> xv, vector<double> yv) { //Lagrange polynomial int size = xv.size(); //Количество точек (для удобства) double sum = 0; //Значение функции for(int i = 0; i < size; i++){ double mul = 1; //Произведение for(int j = 0; j < size; j++){ if(i!=j) mul *= (x - xv[j])/(xv[i]-xv[j]); } sum += yv[i]*mul; } return sum; } int main() { int counter = 0; double a = -3; //Левая грань double b = 3; //Правая грань int fragments = 101; //Разбиение vector<double> xv {}; vector<double> yv {}; double inp; while(cin >> inp) counter++%2 ? yv.push_back(inp) : xv.push_back(inp); //Заполнение for(int i = 0; i < fragments; i++){ double x = a + (b-a)/(fragments-1)*i; printf("%6.3lf\t%6.3lf\n", x, LP(x, xv, yv)); } return 0; } |
Код программы на Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
import java.util.*; import java.lang.*; import java.io.*; class Main { static double LP(double x, double[] xv, double[] yv){ int size = xv.length; double sum = 0; for(int i = 0; i < size; i++){ double mul = 1; for(int j = 0; j < size; j++){ if(i != j){ mul *= (x-xv[j])/(xv[i]-xv[j]); } } sum += yv[i]*mul; } return sum; } static Scanner sc = new Scanner(System.in); public static void main (String[] args) throws java.lang.Exception { int counter = 0; double a = -3; double b = 3; int fragments = 101; ArrayList<Double> xvinp = new ArrayList<Double>(); ArrayList<Double> yvinp = new ArrayList<Double>(); double[] xv; double[] yv; while(sc.hasNext()){ double inp = sc.nextDouble(); if(counter%2 == 0){ xvinp.add(inp); }else{ yvinp.add(inp); } counter++; } xv = new double[xvinp.size()]; yv = new double[yvinp.size()]; for(int i = 0; i < xvinp.size(); i++){ xv[i] = xvinp.get(i); yv[i] = yvinp.get(i); } for(int i = 0; i < fragments; i++){ double x = a + (b-a)/(fragments-1)*i; System.out.println(x + "\t" + LP(x, xv, yv)); } } } |
Ю3.36
Задача Численно убедиться в справедливости равенства, для чего для заданного значения аргумента [latex]x[/latex] вычислить левую его часть и разложение, стоящее в правой части, с заданной погрешностью [latex]\varepsilon[/latex]. Испытать разложение на сходимость при разных значениях аргумента, оценить скорость сходимости, для чего вывести число итераций [latex]n[/latex] (слагаемых или сомножителей), необходимых для достижения заданной точности. [latex]\frac { { e }^{ … Continue reading
Ю4.19
Задача. Многочлен [latex]{P}_{n}(x)[/latex] задан массивом своих коэффициентов [latex]A(n+1)[/latex]. Найти массив коэффициентов производной этого многочлена. [latex]n[/latex] [latex]{a}_{2}[/latex] [latex]{a}_{1}[/latex] [latex]{a}_{0}[/latex] [latex]{b}_{2}[/latex] [latex]{b}_{1}[/latex] [latex]{b}_{0}[/latex] 2 0 0 0 0 0 0 2 17 2 3 34 2 0 2 0 -4 1 0 -4 0 Давайте вначале распишем сам многочлен [latex]{P}_{n}(x)[/latex]: [latex]{P}_{n}(x)={a}_{n}{x}^{n} + {a}_{n-1}{x}^{n-1} + … + {a}_{0}{x}^{0}[/latex]. … Continue reading
A119е
Задача. Вычислить бесконечную сумму с заданной точностью [latex]\varepsilon[/latex]([latex]\varepsilon[/latex]>0). Считать что требуемая точность достигнута, если несколько первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем [latex]\varepsilon [/latex], это и все последующие слагаемые можно уже не учитывать. Вычислить: [latex]\sum _{ i=0 }^{ \infty }{ \frac { 1 }{ { 4 }^{ i }+{ 5 }^{ i+2 … Continue reading
A153
Даны натуральное число [latex]n[/latex], действительный числа [latex]x[/latex], [latex]a_{n}, a_{n-1}, \ldots, a_{0}[/latex]. Вычислить используя схему Горнера, значение [latex]a_{n}{x}^{n} + a_{n-1}{x}^{n-1} + \cdots + a_{0}.[/latex] [latex]a_{n}{x}^{n} + a_{n-1}{x}^{n-1} + \cdots + a_{0} = \left( \ldots \left(a_{n}{x} + a_{n-1}\right)x + \cdots + a_{1}\right)x + a_{0}.[/latex] [latex]n[/latex] [latex]x[/latex] [latex]{a}_{n}[/latex] [latex]{a}_{n-1}[/latex] [latex]{a}_{n-2}[/latex] [latex]{a}_{n-3}[/latex] [latex]s[/latex] 3 2 5 4 3 2 … Continue reading
Для отправки комментария необходимо войти на сайт.