Задача 1. «Факториал»

Напишите функцию, вычисляющую факториал числа.

Пользуясь этой функцией, напишите программу, вычисляющую N! для натуральных чисел N, не превышающих 12.

Задача 2. «Cnk»

Используя функцию вычисления факториала, напишите функцию, вычисляющую Cnk, пользуясь формулой Cnk=n!/(k!*(n-k)!)

Пользуясь этой функцией, напишите программу, вычисляющую Cnk для натурального числа n, не превышающего 12, и целого числа k (0≤k≤n).

Пример

4 2 ---> 6
3 0 ---> 1

Примечание.
Умеем считать числа Cnk с помощью треугольника Паскаля?
Как Вы думаете, какой из способов лучше (или какие плюсы и какие минусы у каждого из способов).

Задача 3. «Сумма Cnk»

Пользуясь функциями из предыдущей задачи напишите программу, которая для заданного числа N (от 1 до 12) вычислит сумму CNk для заданного N и всех k от 0 до N, т.е. сумму CN0+CN1+...+CNN

Пример

2 --->4

Примечание.
Написав программу, внимательно посмотрите на ответы, которые у вас получаются для разных значений N (они отнюдь не случайны!).

Задача 4. Число с наибольшей суммой цифр

Написав функцию, вычисляющую сумму цифр числа, решите следующую задачу:

Дано число N и затем N чисел, все числа — двухзначные.
Найти число с наибольшей суммой цифр.

Обратите внимание, что вывести нужно не сумму цифр, а само число.

Пример

3
12 18 22 --->18

Задача 5. Треугольник-1

Напишите функции

printasterisks(k); printspaces (k)
первая из которых печатает в строку k звездочек, а вторая — k пробелов.

Пользуясь этими функциями, напишите программу, которая печатает на экране треугольник из n строк, аналогичный показанному (для n=3):

  
  *
 ***
*****

Обратите внимание, что в последней строке звездочки должны начинаться непосредственно с первой позиции строки. Никаких лишних символов после последней звездочки в строках быть не должно.

Вводится одно натуральное число N (не превышающее 40). Ваша программа должна печатать треугольник.

Пример вводаПример вывода
3
  *
 ***
*****

Задача 6. 2 треугольника

Пользуясь своими успехами из предыдущей задачи, напишите программу, которая печатает на экране два треугольника из n строк, аналогично показанному (для n=3):

  *     *
 ***   ***
***** *****

Обратите внимание, что в последней строке звездочки должны начинаться непосредственно с первой позиции строки. В последней строке два треугольника должны разделяться ровно одним пробелом. Никаких лишних символов после последней звездочки в строках быть не должно.

Вводится одно натуральное число N (не превышающее 40). Ваша программа должна печатать два треугольника.

Пример вводаПример вывода
3
  *     *
 ***   ***
***** *****

Задача 7. Складываем дроби

Напишите функцию

 add
которая получает на вход две дроби a/b и c/d (задаваемые соответствующими переменными), складывает их, получает результат в виде дроби q/w и возвращает результат, записывая его в переменные, указанные в качестве двух последних параметров при вызове функции.

Напишите программу, которой вводятся четыре числа a, b, c, d, задающие дроби a/b и c/d, и которая выводит результат сложения этих двух дробей в виде двух чисел, задающих числитель и знаменатель результата.

Все вводимые числа натуральные, не превышающие 1000. Выдаваемые числа должны не превышать 2000000. Если ответ может быть записан несколькими дробями, любая из них является верной (например, 5/4 может быть записано и как 10/8).

Пример вводаПример вывода
1 2 3 4
5 4

Задача 8. Складываем дроби-2

Доработайте предыдущую задачу так, чтобы результатом add всегда была несократимая дробь.

Напишите программу, которой вводятся четыре числа a, b, c, d, задающие дроби a/b и c/d, и которая выводит результат сложения этих двух дробей в виде двух чисел, задающих числитель и знаменатель результата.

Все вводимые числа натуральные, не превышающие 1000. Ответ должен быть записан в виде несократимой дроби.

Пример вводаПример вывода
1 2 3 4
5 4