воскресенье, 26 июля 2020 г.

Наибольший общий делитель Python

Необходимо найти НОД двух чисел, используя алгоритм Евклида.

Формат входных данных

На вход подаются два натуральных числа, по числу в новой строке.

Формат выходных данных

Одно число - НОД входных чисел.

Примеры

ВводВывод
30
18
6

ВводВывод
1071
462
21

a=int(input())
b=int(input())

while b!=0:
   a,b=b,a%b
   nod=a
print(nod)

https://www.youtube.com/watch?v=n9oXAOvP3Xs

Задача Первое число трибоначчи, превосходящее заданное на Python

Числа трибоначчи - последовательность целых чисел {t }, заданная с помощью рекуррентного соотношения: t = 0, t = 0, t = 1 , t n+3 = t + t n+1 + t n+2 Нужно найти номер первого числа трибоначчи, превосходящего заданное. Нумерация начинается с .

Формат входных данных

Одно целое число.

Формат выходных данных

Одно число — номер первого числа трибоначчи, превосходящее заданное во входных данных число.

Примеры

ВводВывод
10
7

ВводВывод
0
2

ВводВывод
13
8

a=int(input())

N=20
n=0
t=[0]*N
while n<N-3:
   t[0]=0
   t[1]=0
   t[2]=1
   t[n+3]=t[n]+t[n+1]+t[n+2]
   if t[n]>a:
      print(n)
      break
   n+=1

Определение типа треугольника на Python

Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами.

Формат входных данных

Даны три натуральных числа – стороны треугольника. Каждое число вводится с новой строки.

Формат выходных данных

Необходимо вывести одно из слов: right для прямоугольного треугольника, acute для остроугольного треугольника, obtuse для тупоугольного треугольника или impossible, треугольника с такими сторонами не существует.

Примеры

ВводВывод
3
4
5
right

from math import *

a=int(input())
b=int(input())
c=int(input())
x=-(b*b-a*a-c*c)/(2*a*c)
y=(c+(b*b-a*a-c*c)/(2*c))/b
gama = pi-acos(x)-acos(y)
if a*a+b*b==c*c:
   print('right')
if gama<pi/2:
   print('acute')
elif gama>pi/2:
   print('obtuse')
if a+b<=c:
   print('impossible')

суббота, 25 июля 2020 г.

Задачa D-Обработка массива чисел на Python

На вход программа получает набор чисел, заканчивающихся решеткой. Вам требуется найти: среднее, максимальное и минимальное число в последовательности. Так же нужно вывести cумму остатков от деления суммы троек на последнее число тройки (каждые 3 введеных числа образуют тройку).
Для понимания рассмотрим пример входных данных: 1 2 3 4 5 6 среднее: (1 + 2 + 3 + 4 + 5 + 6) / 6 = 3.5 максимум: 6 минимум: 1 сумма остатков троек: (1 + 2 + 3) mod 3 + (4 + 5 + 6) mod 6 = 6 mod 3 + 15 mod 6 = 0 + 3 = 3
Среднее выводить, округлив до трех знаков после запятой. Для этого нужно использовать функцию round(x, 3)
Того ваша программа должна вывести: 3.5 6 1 3
Подумайте, имеет ли смысл хранить всю последовательность.

Формат входных данных

Последовательность чисел, заканчивающися '#'. Все числа от 1 до 100. Количество чисел в последовательности кратно трем. Одно число на строку.

Формат выходных данных

Четыре числа, разделенных пробелом.

Примеры

ВводВывод
1
2
3
4
5
6
#
3.5 6 1 3

#N=int(input())
A=[0]*100
k=0
x=0
sum=0
max=0
min=0
srednee=0
sum_3=0
i=0
while i!='#':
    #print(i)
    i=input()
    if i!='#':
       A[k]=int(i)
    else:
        break
    k+=1
min=A[0]
while x<=k-1:
    sum+=A[x]
    if (x==k-1):
        print(x)
        srednee=round(sum/(x+1), 3)
    if(A[x]>A[x+1]):
       max = A[x]
    else:
       max = A[x+1]
    if A[x]<min:
       min = A[x]
    if x+2<=k-1 and x%3==0:
        print(A[x+2])
        sum_3 = (A[x]+A[x+1]+A[x+2])%A[x+2]
    x+=1
print(srednee)
print(max)
print(min)
print(sum_3)

пятница, 24 июля 2020 г.

Задача A-Принадлежность точки кругу на Python

Даны координаты точки и радиус круга с центром в начале координат. Определить, принадлежит ли данная точка кругу. Напомним, что круг – это часть плоскости, состоящая из всех точек окружности и всех точек, лежащих внутри окружности.

Формат входных данных

Три целых числа на одной строке: координата точки по оси x, координата точки по оси y, радиус круга r (r > 0).

Формат выходных данных

Вывести "YES" без кавычек, если точка принадлежит кругу, "NO" без кавычек в противном случае.

Примеры

ВводВывод
0 0 1
YES

ВводВывод
-1 3 1
NO

x=int(input())
y=int(input())
r=int(input())
x0=0
y0=0
if x<=x0+r and y<=y0+r:
    print('YES')
else:
    print('NO')

Модель перевернутого маятника на Python

import graphics as gr
from math import *

window = gr.GraphWin("Модель перевернутого маятника", 800, 800)

len = 300

angle = pi/4

aVel = 0
aAcc = 0

aVel2=0
aAcc2=0

g = 9.8
m=0.5
M=1
b=m/(m+M)
j=m*len*len


#x=400
#y=50

x2=0
y2=0

def clear_window():
    rectangle = gr.Rectangle(gr.Point(0, 0), gr.Point(800, 800))
    rectangle.setFill('yellow')
    rectangle.draw(window)


while(True):
   clear_window()

   x1 = 400+len * sin(angle)
   y1 = 50+len * cos(angle)

   my_line = gr.Line(gr.Point(400+x2,360+y2), gr.Point(x1, y1))
   my_circle1 = gr.Circle(gr.Point(x1, y1), 10)
   #my_rectangle = gr.Rectangle(gr.Point(360, 360), gr.Point(440, 400))
   my_circle2 = gr.Circle(gr.Point(400+x2,360+y2), 20)

   my_line.draw(window)
   my_circle1.draw(window)
   my_circle2.draw(window)
   #my_rectangle.draw(window)

   angle+= aVel
   aVel+=aAcc
   aAcc = (g*sin(angle)+b*len*aVel*aVel*sin(angle)*cos(angle))/(len*(1+b*cos(angle)**2))
   x2+=aVel2
   aVel2+=aAcc2
   aAcc2=b*(len*aVel*aVel*sin(angle)-g*sin(angle)*cos(angle))/(1+b*cos(angle)**2)


https://habr.com/ru/post/472588/

Моделирование математического маятника на Python


import graphics as gr
from math import *

window = gr.GraphWin("Модель математического маятника", 800, 800)

len = 300
angle = pi/4
aVel = 0
aAcc = 0
g = 9.8
damping = 0.99

def clear_window():
    rectangle = gr.Rectangle(gr.Point(0, 0), gr.Point(800, 800))
    rectangle.setFill('yellow')
    rectangle.draw(window)


while(True):
   clear_window()

   x = 400+len * sin(angle)
   y = len * cos(angle)

   my_line = gr.Line(gr.Point(400,0), gr.Point(x, y))
   my_circle = gr.Circle(gr.Point(x, y), 10)

   my_line.draw(window)
   my_circle.draw(window)

   #aAcc = -0.01*sin(angle)
   aAcc = (-1*g/len)*sin(angle)
   aVel*=damping
   aVel+=aAcc
   angle+= aVel

http://judge.mipt.ru/mipt_cs_on_python3/labs/lab5.html

https://www.youtube.com/watch?v=9iaEqGOh5WM

среда, 22 июля 2020 г.

Задача I-Максимум последовательности на Python

Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение наибольшего элемента последовательности.
Числа, следующие за нулем, считывать не нужно.

Формат входных данных

Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит).

Формат выходных данных

Выведите ответ на задачу (одно число).
i=1
max=0
while i!=0:
       i=int(input())
       if i>max:
           max=i
print(max)

Задача H-Количество четных элементов на Python

Посчитать количество четных элементов в массиве целых чисел, заканчивающихся нулём. Сам ноль учитывать не надо.

Формат входных данных

Массив чисел, заканчивающийся нулём (каждое число с новой строки, ноль не входит в массив)

Формат выходных данных

Одно число — результат.
i=1
count=0
while i!=0:
       i=int(input())
       if i%2==0 and i != 0:
           count+=1
print(count)

вторник, 21 июля 2020 г.

Программирование задач Ейлера (задача 1) - Числа, кратные 3 или 5

Если выписать все натуральные числа меньше 10, кратные 3 или 5, то получим 3, 5, 6 и 9. Сумма этих чисел равна 23.
Найдите сумму всех чисел меньше 1000, кратных 3 или 5.


Программа на Питоне

n=int(input())
i=1
sum=0
while i<n:
   if i%3==0 or i%5==0:
         sum+=i
   i+=1
print(sum)