Условие задачи Вычислите с заданной точностью [latex]\varepsilon[/latex]сумму ряда [latex]\sum\limits_{i=1}^{\infty}{\frac{\sqrt{i+1}}{ie^i}} [/latex]. Задачу также можно найти здесь. Тесты № Точность [latex]\varepsilon[/latex] Сумма ряда 1 0.1 0.637464 2 0.001 0.685288 3 0.0001 0.685782 4 0.000001 0.685848 Алгоритм решения Поскольку в данной задаче использование рекуррентной формулы приведет только к накоплению погрешности, будем считать каждое слагаемое суммы непосредственно, пока не … Continue reading
e-olymp 332. Детская железная дорога
Витэк не прекращает своих игр с кубиками. А тут еще папа подарил ему детскую железную дорогу. Витэк расставляет какое-то количество кубиков по одному на вагончик и перед тем как закончить игру, решает перестроить состав таким образом, чтобы получившееся слово было лексикографически наименьшим из всех возможных, но так как он уже наигрался, поэтому может только один … Continue reading
e-olymp 7. Римские числа
Постановка задачи e-olymp 7. Римские числа Посчитать сумму двух натуральных чисел A и B, записанных в римской системе счисления. Ответ также записать в римской системе счисления. M = 1000, D = 500, C = 100, L = 50, X = 10, V = 5, I = 1. Все числа – не превышают 2000. Входные данные … Continue reading
e-olymp 378. Таинственная записка
Задача e-olymp 378. Условие Недавно Маша и Катя узнали, что в мире существуют злые хакеры, которые могут запросто вскрыть чужую переписку. Поэтому решили они пересылать только зашифрованные сообщения. Для этой цели подруги стали использовать перестановочный код, где каждая буква заменяется другой. Например: Закодированное сообщение: HPC PJVYMIY Декодированное сообщение: ACM CONTEST В этом примере выполнены следующие … Continue reading
MLoop 15
Задача. Вычислите с точностью [latex]\varepsilon[/latex] значение функции [latex]f(x)=\csc x[/latex] . При вычислениях допустимо использовать только арифметические операции. Тесты [latex]x[/latex] [latex]\varepsilon[/latex] Результат 42 0.3 -8.09848e-05 8 0.15 -0.0117188 55.5 0.04 -3.50972e-055 -12 0.6 0.00347222 -82 0.0001 -3.23677e-08 Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <cmath> using namespace std; int main() { double x, e; cin>>x>>e; double sum1=x; // в случае, когда i=0 double sum2=-x*x*x/6; // в случае, когда i=1 for (int i=2; abs(1/sum2-1/sum1)>=e; i++) { sum1=sum2; sum2*=-x*x/((2*i)*(2*i+1)); } cout<<1/sum2<<endl; return 0; } |
Код программы на ideone.com Решение : Косеканс — это тригонометрическая функция, которою можно определить формулой [latex]\csc x=\frac{1}{\sin x}[/latex]. Таким … Continue reading
e-olymp 494. Гласные
Условие К гласным буквам в латинском алфавите относятся буквы A, E, I, O, U и Y. Остальные буквы считаются согласными. Напишите программу, считающую количество гласных букв в тексте. Входные данные Во входном файле содержатся одна строка текста, состоящая только из заглавных латинских букв и пробелов. Длина строки не превышает 100 символов. Выходные данные В выходной … Continue reading
e-olymp 330. Слово-чемпион
Задано некоторое предложение на неизвестном языке. Назовем слово в нем чемпионом, если оно является палиндромом и количество букв в нем максимально. Буквами алфавита в неизвестном языке являются буквы латинского алфавита и арабские цифры. Гарантируется, что других символов, кроме пробелов и знаков препинания в предложении нет. Задача взята с сайта e-olymp. Входные данные Предложение на неизвестном языке. … Continue reading
MLoops 10
Задача MLoops 10 Найдите закономерность и напишите программу, которая выводит аналогичную таблицу для любых чисел [latex]n > 0[/latex] (количество столбцов) и [latex]m > 0[/latex] (количество строк). Замечание 1. В некоторых задачах появляется дополнительный параметр [latex]k < n[/latex]. Замечание 2. Многоточие означает продолжение последовательности Совет. Если закономерность разгадать не получается, попробуйте воспользоваться Онлайн-энциклопедией целочисленных последовательностей.
1 2 3 4 5 6 7 8 9 |
123...k...321+123...k...3 23...k...321+123...k...32 3...k...321+123...k...321 ...k...321+123...k...321+ ..k...321+123...k...321+1 .k...321+123...k...321+12 k...321+123...k...321+123 ...321+123...k...321+123. |
MLoops 17
Задача Найти закономерность и написать программу, которая выводит аналогичную таблицу для любых чисел (количество столбцов) и (количество строк). Замечание 1. В некоторых задачах появляется дополнительный параметр .
1 2 3 4 5 6 7 8 9 10 11 12 13 |
+++++++++++++++++++++++++++++++ +....^....+....^....+....^....+ +....|....+....|....+....|....+ +<-- k -->+<-- k -->+<-- k -->+ +....|....+....|....+....|....+ +....v....+....v....+....v....+ +++++++++++++++++++++++++++++++ +....^....+....^....+....^....+ +....|....+....|....+....|....+ +<-- k -->+<-- k -->+<-- k -->+ +....|....+....|....+....|....+ +....v....+....v....+....v....+ +++++++++++++++++++++++++++++++ |
Тесты Входные данные Выходные данные m n k 13 31 9
1 2 3 4 5 6 7 8 9 10 11 12 13 |
+++++++++++++++++++++++++++++++ +.........+.........+.........+ +.........+.........+.........+ +.........+.........+.........+ +.........+.........+.........+ +.........+.........+.........+ +++++++++++++++++++++++++++++++ +.........+.........+.........+ +.........+.........+.........+ +.........+.........+.........+ +.........+.........+.........+ +.........+.........+.........+ +++++++++++++++++++++++++++++++ |
5 8 4
1 2 3 4 5 |
++++++++ +....+.. +....+.. +....+.. +....+.. |
20 20 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
++++++++++++++++++++ +...+...+...+...+... +...+...+...+...+... +...+...+...+...+... +...+...+...+...+... +...+...+...+...+... ++++++++++++++++++++ +...+...+...+...+... +...+...+...+...+... +...+...+...+...+... +...+...+...+...+... +...+...+...+...+... ++++++++++++++++++++ +...+...+...+...+... +...+...+...+...+... +...+...+...+...+... +...+...+...+...+... +...+...+...+...+... ++++++++++++++++++++ +...+...+...+...+... |
Алгоритм Программа выполняется с помощью … Continue reading
Mloops 21
Задача.Найдите закономерность и напишите программу, которая выводит аналогичную таблицу для любых чисел [latex]n>0[/latex] (количество столбцов) и [latex]m>0[/latex] (количество строк). Совет. Если закономерность разгадать не получается, попробуйте воспользоваться Онлайн-энциклопедией целочисленных последовательностей. 1+12+33+64+105+156+217+288 12+33+64+105+156+217+288+1 33+64+105+156+217+288+1+12 64+105+156+217+288+1+12+33 105+156+217+288+1+12+33+64 156+217+288+1+12+33+64+105 217+288+1+12+33+64+105+156 Тесты № [latex]m[/latex] [latex]n[/latex] Результат 1 5 13 1+12+33+64+10 12+33+64+105+ 33+64+105+1+1 64+105+1+12+3 105+1+12+33+6 2 8 11 1+12+33+64+ 12+33+64+1+ 33+64+1+12+ 64+1+12+33+ 1+12+33+64+ … Continue reading
MLoops 7
Задача Найдите закономерность и напишите программу, которая выводит аналогичную таблицу для любых чисел [latex]n > 0[/latex] (количество столбцов) и [latex]m > 0[/latex] (количество строк). Входные данные Два целых числа: количество столбцов и строк. Выходные данные Таблица [latex]m * n[/latex] со следующей закономерностью:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
123+123+123+123+1 +123+123+123+123+ 3+123+123+123+123 23+123+123+123+12 123+123+123+123+1 +123+123+123+123+ 3+123+123+123+123 23+123+123+123+12 123+123+123+123+1 +123+123+123+123+ 3+123+123+123+123 23+123+123+123+12 123+123+123+123+1 +123+123+123+123+ 3+123+123+123+123 23+123+123+123+12 |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> #include <cmath> using namespace std; int main(){ int m, n; cin >> m >> n; for (int i = 1; i <= m; i++){ for (int j = 1; j <= n; j++){ cout << (abs(1 + 3*i + j) % 4 == 0 ? '+' : (char)('0' + abs(1 + 3*i + j) % 4)); } cout << endl; } return 0; } |
Тесты m n 3 4
1 2 3 |
123+ +123 3+12 |
7 7
1 2 3 4 5 6 7 |
123+123 +123+12 3+123+1 23+123+ 123+123 +123+12 3+123+1 |
11 … Continue reading
e-olymp 141. Минимальная сумма цифр
Условие задачи: Сколько натуральных чисел из промежутка [latex][M,N][/latex] имеют наименьшую сумму цифр ? Задачу также можно найти здесь. Входные данные: Во входном файле два числа [latex]M[/latex] и [latex]N[/latex] ( [latex]1\le M\le N\le 1000000[/latex] ) . Выходные данные: В выходной файл нужно записать ответ — одно число. Тесты № M N Вывод 1 1 100 3 … Continue reading
MLoop 10
Вычислите с точностью [latex]\varepsilon[/latex] значение функции . При вычислениях допустимо использовать только арифметические операции. Решение задачи: Для нахождения значения функции (гиперболический косинус) с точностью [latex]\varepsilon[/latex] воспользуемся формулой Тейлора (разложение функции в бесконечную сумму степенных функций):[latex]chx=1+\frac{x^2}{2}+\frac{x^4}{4}+[/latex]…[latex]=\sum_{n=0}^{\infty}\frac{1}{(2n+1)!}\times x^{2n}[/latex]. [latex]x_n=\frac{1}{(2n+1)!}\times x^{2n}[/latex], тогда [latex]x_{n-1}=\frac{1}{(2(n-1)+1)!}\times x^{2(n-1)}[/latex]. Рекуррентное соотношение [latex]x_n[/latex] и [latex]x_{n-1}=[/latex][latex]\frac{x_n}{x_{n-1}}=\frac{x^2}{2n\times(2n-1)}[/latex]. Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <iostream> #include <cmath> using namespace std; double ch(double x, double e) { double result = 1; double member = 1; for (int i = 1; abs(member) >= e; i++) { member *= x * x; member /= 2*i * (2*i - 1); result += member; } return result; } int main() { double x, e; cin >> x >> e; cout << ch(x, e); return 0; } |
Тесты: Входные данные Выходные данные x e ch(x) 9 0.01 4051.54 16 … Continue reading
MLoops8
Задача Найти закономерность и написать программу, которая выводит аналогичную таблицу для любых чисел [latex]n>0[/latex] (количество столбцов) и [latex]m>0[/latex] (количество строк). Входные данные Два числа:количество столбцов и строк. Выходные данные Таблица размером n*m со следующей закономерностью: +21++21++21++21++21++21++ 1++21++21++21++21++21++21 +21++21++21++21++21++21++ 1++21++21++21++21++21++21 +21++21++21++21++21++21++ 1++21++21++21++21++21++21 +21++21++21++21++21++21++ 1++21++21++21++21++21++21 Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <iostream> using namespace std; int main(){ int m,n; cin>>n>>m; for(int i=1;i<m+1;i++){ for(int j=1;j<n+1;j++){ if(i%2==0){ if ((j+3)%4==0) cout<< "1"; else cout<<(j%4==0?"2":"+"); } else{ if ((j+1)%4==0) cout<<"1"; else cout<<((j+2)%4==0?"2":"+"); } } cout<<endl; } return 0; } |
Упрощенный вариант
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <iostream> using namespace std; int main() { int m,n; cin>>n>>m; for(int i=1;i<m+1;i++) { for(int j=1;j<n+1;j++) { if( ((i%2==0) && ((j+3)%4==0))||((i%2!=0) && ((j+1)%4==0))) { cout<< "1"; } if ((j+3-2*(i%2))%4!=0) { cout<<((j+2*(i%2))%4==0?"2":"+"); } } cout<<endl; } return 0; } |
Тесты [latex]n[/latex] [latex]m[/latex] Выходные данные 1 … Continue reading
MLoop 11
Условие задачи Вычислите с точностью значение функции . При вычислениях допустимо использовать только арифметические операции. Код программы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <iostream> #include <cmath> #define PI 3.1415926 using namespace std; double f(double e, double x){ int i = 0; double p = x; double s = x; while (p > e){ p*=(x*x*(2*i + 1)*(2*i + 1))/(2*(i+1)*(2*i + 3)); s+=p; i++; } return s; } int main() { double e; //точность double x; cin >> e >> x; cout << PI/2 - f(e, x) << endl; return 0; } |
Тесты Входные данные Выходные данные Арккосинус e x arccos = ([latex]\pi[/latex]/2 — f) Арккосинус 0.000001 0.866 0.523651 0.5236495809 0.01 0.5 1.04727 1.0471975512 0.00000000000001 0.35 1.21323 1.2132252231 0.00001 0.99 0.141873 0.1415394733 Решение Для того, чтобы представить … Continue reading
MLoops1
Задача Найти закономерность и написать программу, которая выводит аналогичную таблицу для любых чисел [latex]n> 0[/latex] (количество столбцов) и [latex]m>0[/latex] (количество строк).
1 2 3 4 5 6 7 8 |
-*-*-*-*-*-*-*-*-*-*-*-*- *-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*-*-*- *-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*-*-*- *-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*-*-*- *-*-*-*-*-*-*-*-*-*-*-*-* |
Тесты Ввод: 6 6 8 4 25 8 Вывод: -*-*-* *-*-*- -*-*-* *-*-*- -*-*-* *-*-*- -*-*-*-* *-*-*-*- -*-*-*-* *-*-*-*- -*-*-*-*-*-*-*-*-*-*-*-*- *-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*-*-*- *-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*-*-*- *-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*-*-*- *-*-*-*-*-*-*-*-*-*-*-*-* Решение Что бы решить задачу, надо написать … Continue reading
MLoop 12
Задача. MLoop 12 Вычислите с точностью [latex]\varepsilon[/latex] значение функции [latex]f(x) = \arctan x[/latex]. При вычислениях допустимо использовать только арифметические операции. Тесты Входные данные Выходные данные № Точность Аргумент [latex]\arctan x[/latex] Погрешность 1 1 0.5 0.5 0.0363524 2 10 0.82 0.669293 0.0175249 3 100 0.77 0.652823 0.00335552 4 1000 1 0.666667 0.118731 Код программы
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 |
#include <iostream> #include <cmath> using namespace std; double myAtan(double x, int n) { double a = x; double sum = a; double b = a; double E = 1 / n; for(int i = 1; a > E; i++){ b *= - x * x; a *= b / (2 * i + 1); sum += a; } return sum; } int main() { double x; int n; cin >> x >> n; cout << "my arctg: " << myAtan(x, n) << endl; cout << "arctg: " << atan(x) << endl; cout << "|arctg - my arctg| = " << abs(myAtan(x, n) - atan(x)) << endl; return 0; } |
Для … Continue reading
MLoop 3
Используйте метод золотого сечения для того, чтобы отыскать с точностью [latex]\varepsilon[/latex] локальный максимум функции на отрезке . Входные данные [latex]a, b[/latex] — концы отрезка, на котором требуется найти максимум, и точность [latex]\varepsilon[/latex]. Выходные данные Точка локального максимума и локальный максимум в формате [latex](x_{max}, y_{max})[/latex]. Тесты [latex]\varepsilon[/latex] [latex]a[/latex] [latex]b[/latex] [latex](x_{max}, y_{max})[/latex] [latex]0.001[/latex] [latex]1.05[/latex] [latex]2.2[/latex] [latex](1.74435, 0.951781)[/latex] [latex]0.0001[/latex] … Continue reading
MLoops 14
MLoops14. Постановка задачи Найдите закономерность и напишите программу, которая выводит аналогичную таблицу для любых чисел [latex]n > 0[/latex] (количество столбцов) и [latex]m > 0[/latex] (количество строк). Замечание 1. В некоторых задачах появляется дополнительный параметр [latex]k < n[/latex]. Замечание 2. Многоточие означает продолжение последовательности.
1 2 3 4 5 6 7 8 9 10 11 |
123...k123...k123...k123...k ++++++1++++++1++++++1++++++1 ++++++2++++++2++++++2++++++2 ++++++3++++++3++++++3++++++3 ++++++.++++++.++++++.++++++. ++++++.++++++.++++++.++++++. ++++++.++++++.++++++.++++++. ++++++k++++++k++++++k++++++k 123...k123...k123...k123...k ++++++1++++++1++++++1++++++1 ++++++2++++++2++++++2++++++2 |
Алгоритм решения Легко заметить, что строки с номерами [latex]1 + i … Continue reading
MLoop 2
Задача. Используйте метод хорд для того, чтобы отыскать с точностью [latex]\varepsilon[/latex] все действительные корни уравнения [latex]\frac{x}{2 \cdot \sin x +1}=\tan(\ln(x^2+1))[/latex]. Для подготовки необходимых графиков воспользуйтесь этим ресурсом. Тесты(найдено с помощью математической системы WolframAlpha): [latex]A[/latex] [latex]B[/latex] [latex]x\approx[/latex] -20 20 -11.6945378230838209122818536587051434153… -1.25741503276862309237205903178504130394… 0 0.547316310185252929580383582338832450320… 10.9948442206261587135425985750810372810… Код программы
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
#include <stdio.h> #include <math.h> #include <iostream> #include<cfloat> using namespace std; const int max_iterations=100; const double interval = 0.001; // interval length for roots subdivision bool is_root = false; // is false if function has a second type break in root candidate point double delta; //precision of root search double A, B; double f(double x)//our function { double r = DBL_MAX; try { r = x / (2*sin(x)+1) - tan(log(x*x+1)); } catch(...) { //nothing to do for arithmetic exception } return r; } bool is_change_sign(double fa, double fb) { return fa*fb<0; } double find_root(double a, double b, double delta, bool *yes) { double fa; double fb; double fc; double c; int l=0; fa=f(a); fb=f(b); double dy,dy1; //old and new OY projections of chord dy=fabs(fa-fb); dy1=DBL_MAX; while(true) { l++; if(l > max_iterations) { *yes=false; return (a+b)/2; } c = a - (b - a) * fa/(fb - fa); fc = f(c); if(fa*fc>0) { a=c; fa=fc; } else { b=c; fb=fc; } if(fabs(fa)<delta) { *yes=true; return a; } if(fabs(fb)<delta) { *yes=true; return b; } if(l>10) //there's a magic number, we must check conditions of break or stop after some iterations(some = 10) { if(dy1>dy) //checking if there's break of second kind(pole) { *yes=false; return (a+b)/2; } if(fabs(b-a)<delta) //else we are near the root { *yes=true; return (a+b)/2; } } dy=dy1; //change old chord height dy1=fabs(fa-fb); //calculate new chord height } // we can't get here *yes=false; return c; } int main() { scanf("%lf %lf %lf",&A,&B,&delta); double a,b; double fa, fb; /* test interval for finding roots int k=2; A= sqrt(exp(M_PI*(1/2.0+k))-1)-M_PI;//70010637.8772-10; B= sqrt(exp(M_PI*(1/2.0+k))-1)+M_PI;//70010637.8772+10; delta = 1e-12; printf("A=%20.19g A=%20.19g delta=%20.19g \n",A,B,delta); */ fb = f(A); for(a = A, b = A + interval; b<=B; a += interval, b += interval) { fa = fb; fb = f(b); if(is_change_sign(fa,fb)) { double r=find_root(a,b,delta, &is_root); if(is_root) { printf("%14.15lf \n",r); } } } return 0; } |
Алгоритм Для начала запишем данное нам уравнение в виде функции [latex]y=f(x)[/latex] и … Continue reading
Для отправки комментария необходимо войти на сайт.