Нахождение суммы бесконечно убывающего ряда.
написать программу суммирования ряда, в таблице, при одном и том
же значении аргумента и 2-х значениях точности, отличающихся друг от друга более чем
на порядок. сравнить полученные результаты с точным значением и сделать вывод о схождении ряда.
вычисления заканчивать при достижении заданной степени точности (т. е. когда очередной член ряда становится по модулю меньше введенного значения точности ).
(см. объяснение)
Объяснение:
Ниже показано решение на различных языках программирования + аналитический метод.
Java:
System.out.println(BigInteger.valueOf(2).pow(102).add(BigInteger.valueOf(2).pow(100)).add(BigInteger.valueOf(2).pow(85)).add(BigInteger.valueOf(2).pow(17)).toString(8));
Pascal:
##
var res: BigInteger := BigInteger.Add(BigInteger.Add(BigInteger.Add(BigInteger.Pow(BigInteger.Parse('2'),102),BigInteger.Pow(BigInteger.Parse('2'),100)),BigInteger.Pow(BigInteger.Parse('2'),85)),BigInteger.Pow(BigInteger.Parse('2'),17));
var s: string := '';
while(not res.IsZero) do
begin
s:= BigInteger.Remainder(res,8).ToString+s;
res:= BigInteger.Divide(res,BigInteger.Parse('8'));
end;
writeln(s);
Python:
a = 2**102+2**100+2**85+2**17
s = ''
while(a>0):
s=str(a%8)+s
a//=8
print(s)
Аналитический метод:
Нужно представить все, как <число>*8^[степень]. Заметим, что:
Результат полученный во всех случаях одинаковый:
12000020000000000000000000000400000
Это означает, что всего в числе встречается 4 различные цифры.
Задание выполнено!
using System;
using System.Collections;
namespace gg
{
sealed class Hockey_player
{
public static int counter = 0;
public static int counter25 = 0;
private static int general_age = 0;
private string surname;
private int age;
private int quanity_games;
private int missing_washers;
public Hockey_player()
{
Console.Write("Введите фамилию хоккеиста: ");
surname = Console.ReadLine();
Console.Write("Введите возраст хоккеиста: ");
age = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите количество игр хоккеиста: ");
quanity_games = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите количество пропущенных шайб хоккеиста: ");
missing_washers = Convert.ToInt32(Console.ReadLine());
general_age += age;
counter++;
if (age > 25)
counter25++;
}
public void PrintInfo()
{
Console.WriteLine($"Фамилия хоккеиста:{surname}\nВозраст хоккеиста: {age}\nКоличество игр хоккеиста: {quanity_games}\nКоличество пропущенных шайб хоккеиста: {missing_washers}");
}
public void PrintNeedInfo()
{
if (age > 25)
{
PrintInfo();
}
}
public static void average_age()
{
if (counter != 0)
Console.Write(general_age / counter);
else
Console.Write("Невозможно определить!");
}
}
class Program
{
public static void Menu()
{
Console.WriteLine("\n1-Добавить хоккеиста в список\n2-Определить средний возраст всех хоккеистов\n3-Вывести сведения о хоккеистах, которым больше 25 лет\n0-Выход");
}
static void Main(string[] args)
{
ArrayList lst = new ArrayList();
int choice;
main:
Menu();
choice = Convert.ToInt32(Console.ReadLine());
switch (choice)
{
case 1:
lst.Add(new Hockey_player());
break;
case 2:
Console.Write($"Средний возраст: ");
Hockey_player.average_age();
break;
case 3:
if (Hockey_player.counter25 > 0)
{
for (int i = 0; i < lst.Count; i++)
{
if (lst[i] as Hockey_player != null)
{
Hockey_player buff = (Hockey_player)lst[i];
buff.PrintNeedInfo();
}
}
}
else
Console.WriteLine("Нет таких хоккеистов!");
break;
case 0:
Environment.Exit(0);
break;
}
goto main;
}
}
}