Задача: Пусть [latex] x_{1}=x_{2}=x_{3}=1 [/latex];
[latex] x_{i}=x_{i-1}+x_{i-3} [/latex]; [latex] i=4, 5, [/latex]…Вычислить [latex] \sum_{i=1}^{100}{\frac{x_{i}}{2^{i}}} [/latex]
Тесты:
n | result |
-1 | error |
0 | error |
1 | 0.5 |
2 | 0.75 |
3 | 0.875 |
4 | 1 |
5 | 1,09375 |
12 | 1.305908 |
100 | 1.333333 |
Код программы:
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 |
#include <stdio.h> int main() { // рабочие переменные double s = 0; int i, n ; double b, x, xPrev = 0, xPrev2 = 0, xPrev3 = 0; int k; if( scanf("%d", &n) <= 0 ) { printf("error: missing n\n" ); return 0; } if( n <= 0 ) { printf("error: out of range: n=%d\n", n); return 0; } // основной цикл сравнения for( i = 1, b = 2; i <= n; i++, b *= 2 ) { if( i > 3 ) xPrev3 = xPrev2; if( i > 2 ) xPrev2 = xPrev; if( i > 1 ) xPrev = x; if( i < 4 ) { x = 1; } else { x = xPrev + xPrev3; } s += x / b; } // вывод результата printf("result: %lf\n", s ); 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 56 57 58 59 60 61 62 63 |
import java.util.*; import java.lang.*; import java.io.*; class SumApp { public static Integer scanInteger( Scanner in ) { return ( ( in.hasNextInt() ) ? in.nextInt() : null ); } public static void main( String[] args ) { // рабочие переменные Integer n = null; int i; double s = 0; double b, x = 0, xPrev = 0, xPrev2 = 0, xPrev3 = 0; Scanner in = new Scanner(System.in); n = scanInteger( in ); in.close(); if( n == null || n <= 0 ) { System.err.printf("error: missing or out of range: n=%d\n", n); return; } // основной цикл сравнения for( i = 1, b = 2; i <= n; i++, b *= 2 ) { if( i > 3 ) { xPrev3 = xPrev2; } if( i > 2 ) { xPrev2 = xPrev; } if( i > 1 ) { xPrev = x; } if( i < 4 ) { x = 1; } else { x = xPrev + xPrev3; } s += x / b; } // вывод результата System.out.printf("result: %f\n", s ); } } |
Ссылка: https://ideone.com/NVdBlc
План программы:
- Назначение рабочих переменных
- Проверка ввода n
- Основной цикл сравнения для получения нужного значения переменных
- Цикл вычисления
- Вывод результата
Программа выполняет суммирование в цикле согласно заданной формуле. Задаётся только число итераций, а слоагемое вычисляется согласно формуле.
Ссылка на ideone.com: http://ideone.com/Yy8e5l