вівторок, 23 квітня 2013 р.

Найбільший спільний дільник і найменше спільне кратне

Приклади знаходження найбільшого спільного дільника і найменшого спільного кратного на Python.

Найбі́льший спі́льний дільни́к (НСД) — найбільше натуральне число, на яке ці числа діляться без залишку.

Найменше спільне кратне (НСК) для (a, b) — найменше натуральне число яке ділиться без залишку на обидва числа a, b.

Варіант перший:
a = int(input('a = '))
b = int(input('b = '))

def evklid(a, b): # Функція знаходження найбільшого спільного дільника
    if a % b == 0:
        return b
    else:
        return evklid(b, a%b)

print (evklid(a, b))

nsk = a * b // evklid(a, b) # Знаходимо найменше спільне кратне
print (nsk)

Варіант другий:
a = int(input('a = '))
b = int(input('b = '))

def nsd(a, b): # Функція знаходження найбільшого спільного дільника
    while a*b != 0:
        if a >= b:
            a = a % b
        else:
            b = b % a
    return a + b            

print (nsd(a, b))

nsk = a * b // nsd(a, b) # Знаходимо найменше спільне кратне
print (nsk)

неділя, 21 квітня 2013 р.

ЗАДАЧА №9

Розв’язання завдання №9 на Python.

infile = open("INPUT.TXT")
outfile = open("OUTPUT.TXT", "w")

infile.readline()

line = [int(x) for x in infile.readline().split()]

summ = 0
for x in line:
    if x > 0:
        summ += x
        
mul = 1
nmin = line.index(min(line))
nmax = line.index(max(line))

if nmin > nmax:
    for x in line[nmax+1:nmin]:
        mul *= x
else:
    for x in line[nmin+1:nmax]:
        mul *= x

outfile.write(str(summ) + ' ' + str(mul))        
      
infile.close()
outfile.close()



ЗАДАЧА №8

Розв’язання завдання №8 на Python.

infile = open("INPUT.TXT")
outfile = open("OUTPUT.TXT", "w")

lst = [int(x) for x in infile.readline().split()]

if lst[2] == lst[0] * lst[1]:
    outfile.write('YES')
else:
    outfile.write('NO')        
      
infile.close()
outfile.close()



ЗАДАЧА №7

Розв’язання завдання №7 на Python.

infile = open("INPUT.TXT")
outfile = open("OUTPUT.TXT", "w")

line = [int(x) for x in infile.readline().split()]

outfile.write(str(max(line)))        
        
infile.close()
outfile.close()     



ЗАДАЧА №6

Розв’язання завдання №6 на Python.

infile = open("INPUT.TXT")
outfile = open("OUTPUT.TXT", "w")

line = infile.readline()

try:
    if (64 < ord(line[0]) and ord(line[3]) < 73) and (0 < int(line[1]) and int(line[4]) < 9):
        if abs(ord(line[0]) - ord(line[3])) == 2 and abs(int(line[1]) - int(line[4])) == 1:
            outfile.write('YES')
        elif abs(ord(line[0]) - ord(line[3])) == 1 and abs(int(line[1]) - int(line[4])) == 2:
            outfile.write('YES')
        else:
            outfile.write('NO')
except:
    outfile.write('ERROR')        
        
infile.close()
outfile.close()       

пʼятниця, 19 квітня 2013 р.

ЗАДАЧА №5

Розв’язання завдання №5 на Python.

infile = open('INPUT.TXT')
outfile = open('OUTPUT.TXT', 'w')

lines = infile.readlines()
lines[1] = [int(x) for x in lines[1].split()]

odd = []
even = []

for e in lines[1]:
    if e % 2:
        odd.append(e)
    else:
        even.append(e)
        
for e in odd:
    outfile.write(str(e) + ' ')
outfile.write('\n')            

for e in even:
    outfile.write(str(e) + ' ')
outfile.write('\n')            

if len(odd) < len(even):
    outfile.write('YES')
else:
    outfile.write('NO')        

ЗАДАЧА №4

Розв’язання завдання №4 на Python.

n = input('Введіть число: ')
print(n + '9' + str(9 - int(n)))



ЗАДАЧА №3

Розв’язання завдання №3 на Python.

def pw(n):
    if len(n) == 1:
        return int(n) ** 2
    else:
        return str(int(n[:-1]) * (int(n[:-1]) + 1)) + '25'

n = input('Введіть число: ')
print(pw(n))



середа, 17 квітня 2013 р.

ЗАДАЧА №2

Розв’язання завдання №2 на Python. Потрібно порахувати суму цілих чисел від 1 до N.

Варіант перший:
infile = open('input.txt')
outfile = open('output.txt', 'w')
 
N = int(infile.readline())
 
s = 0
for x in range(0, N+1):
    s += x

outfile.write(str(s))
 
infile.close()
outfile.close()

Варіант другий:
infile = open('input.txt')
outfile = open('output.txt', 'w')
 
N = int(infile.readline())
 
s = 0
while N > 0:
    s += N
    N -= 1

outfile.write(str(s))
 
infile.close()
outfile.close()          



Бульбашкове сортування

Бульбашкове сортування — у поданому наборі даних (списку чи масиві) порівнюються два сусідні елементи, якщо один з елементів не відповідає критерію сортування (є більшим, або ж, навпаки, меншим за свого сусіда), то ці два елементи міняються місцями. Прохід по списку продовжується до тих пір, доки дані не будуть відсортованими.

Перший варіант:
a = [1, 8, 3, 5, 7, 4]

print(a)

j = 1
while j < len(a):
    k = 0
    while k < (len(a) - 1):
        if a[k] > a[k+1]:
            a[k], a[k+1] = a[k+1], a[k]
        k += 1
    j += 1
     
print(a)            

Другий варіант:
a = [1, 8, 3, 5, 7, 4]

print(a)

for i in range(len(a), 0, -1):
    for j in range(0, len(a) - 1):
        if a[j] > a[j+1]:
            a[j], a[j+1] = a[j+1], a[j]
            
print(a)    



вівторок, 16 квітня 2013 р.

ЗАДАЧА №1 (A+B)

Розв’язання завдання №1 на Python
infile = open('input.txt')
outfile = open('output.txt', 'w')

line = infile.readline().split()

outfile.write(str(int(line[0]) + int(line[1])))

infile.close()
outfile.close()



Послідовність Фібоначчі

Послідовність Фібоначчі — послідовність в якій кожне наступне число дорівнює сумі двох попередніх чисел.

a, b = 0, 1
while b < 10000:
    print(b)
    a, b = b, a+b

понеділок, 15 квітня 2013 р.

Виведення числа у вигляді «великих цифр»

space = ['        ',
         '        ',
         '        ',
         '        ',
         '        ',
         '        ',
         '        ']

zero = ['   ***  ',
        '  *   * ',
        ' *     *',
        ' *     *',
        ' *     *',
        '  *   * ',
        '   ***  ']

one = ['   **   ',
       '  * *   ',
       ' *  *   ',
       '    *   ',
       '    *   ',
       '    *   ',
       ' * * * *']

two = [' * * * *',
       '       *',
       '       *',
       ' * * * *',
       ' *      ',
       ' *      ',
       ' * * * *']
       
three = [' * * * *',
         '       *',
         '       *',
         '   * * *',
         '       *',
         '       *',
         ' * * * *']

four = [' *     *',
        ' *     *',
        ' *     *',
        ' * * * *',
        '       *',
        '       *',
        '       *']
             
five = [' * * * *',
        ' *      ',
        ' *      ',
        ' * * * *',
        '       *',
        '       *',
        ' * * * *']

six = [' * * * *',
       ' *      ',
       ' *      ',
       ' * * * *',
       ' *     *',
       ' *     *',
       ' * * * *']
       
seven = [' * * * *',
         '      * ',
         '     *  ',
         '    *   ',
         '    *   ',
         '    *   ',
         '    *   ']       

eight = [' * * * *',
         ' *     *',
         ' *     *',
         ' * * * *',
         ' *     *',
         ' *     *',
         ' * * * *']           

nine = [' * * * *',
        ' *     *',
        ' *     *',
        ' * * * *',
        '       *',
        '       *',
        ' * * * *']
         
numbers = {'0': zero, '1': one, '2': two, '3': three,
           '4': four, '5': five, '6': six, '7': seven,
           '8': eight, '9': nine, ' ': space}

number = input('Веедіть число: ')

digits = []
for char in number:
    digits.append(char)
    
row = 0

while row < 7:
    for column in digits:
        print(numbers[column][row], end=' ')
    print()
    row += 1

неділя, 14 квітня 2013 р.

Алгоритм Евкліда. Рекурсія.

Алгоритм Евкліда — ефективний метод обчислення найбільшого спільного дільника.
import sys

def evklid(m, n):
    if m%n == 0:
        return n
    else:
        return evklid(n, m%n)
        
def main():
    print('Файл називається', sys.argv[0])
    if len(sys.argv) == 3:
        m, n = (int(sys.argv[1]), int(sys.argv[2]))
    else:
        m = int(input('Введіть значення m: '))
        n = int(input('Введіть значення n: '))
        
    print(evklid(m, n))
    
if __name__ == '__main__':
    main()