AIZU ONLINE JUDGE: Programming Challenge プログラミング入門 トピック10

AOJの プログラミング入門 トピック10にチャレンジしました。

onlinejudge.u-aizu.ac.jp

 

トピック10 数学関数

 

関数を使った問題が4問です。

トピック10

 

10_A:Distance

2点間の座標から距離を求める問題です。

 

3平方の定理を用いて作成しました。入力データが少数だったので型をfloat型にしました。

 

import math
x1,y1,x2,y2 = map(float,input().split())

z1 = (x2-x1)**2 + (y2-y1)**2

print(math.sqrt(z1))

 

10_B:Triangle

三角形の2辺 a, b とその間の角 C から、その三角形の面積 S、周の長さ L, a を底辺としたときの高さ h を求める問題です。

面積は (1/2) x a x b x sinθ

周の長さは c2 = a2 + b2 − 2ab cos α

高さは 面積 x 2 x a

角度は「度」で入力されるのでラジアンに変換して計算しました。

 

import math
a,b,c = map(int,input().split())

rad = math.radians(c)

#面積 S
S = 0.5 * math.sin(rad) * a * b

print(S)

#周の長さc2
c1 = a*a + b*b - 2*a*b*math.cos(rad)
c2 = math.sqrt(c1)
print(c2+a+b)

#高さ h
h = S * 2 / a
print(h)

 

10_C:Standard Deviation

10_Cは標準偏差を求める問題です。

分散は以下の式で求められ、分散の平方根標準偏差となります。

(人数:n、得点:s、平均点:m)

α2 = (∑ni=1(si - m)2)/n

 

計算を順番に実行するだけで、素直に作成できました。

 

import math

while True :
    #人数
    n = int(input())
    if n == 0 :
        break
    else :
        #人数分の得点
        list_n = list(map(int,input().split()))

        #平均 
        avg = sum(list_n) / len(list_n)

        #分散
        sss = 0
        for iii in range(len(list_n)):
            sss = sss + (list_n[iii]-avg)**2
        sss = sss/n

        #標準偏差 s
        s = math.sqrt(sss)
        print(s) 

 

10_D:Distance Ⅱ

ミンコフスキー距離を求める問題です。

ミンコフスキー距離

math.fabsで絶対値を作成しました。

2乗根、3乗根は x**(1/2)、x**(1/3)で行いました。

 

 

import math

n = int(input())

list_x = list(map(int,input().split()))
list_y = list(map(int,input().split()))

#p=1
d1= 0
for iii in range(n):
    d1 = d1 + math.fabs(list_x[iii] - list_y[iii])
print(d1)

#P=2
d2 = 0
for iii in range(n):
    d2 = d2 + ( math.fabs(list_x[iii] - list_y[iii]) ) **2
print(d2**(1/2))

#P=3
d3 = 0
for iii in range(n):
    d3 = d3 + ( math.fabs(list_x[iii] - list_y[iii]) ) **3
print(d3**(1/3))


#p=無限
list_d=[]
for iii in range(n):
     list_d.append(math.fabs(list_x[iii] - list_y[iii]))
print(max(list_d))

 

Completed

 

 

/* -----codeの行番号----- */