顯示具有 數學V 標籤的文章。 顯示所有文章
顯示具有 數學V 標籤的文章。 顯示所有文章

2020年5月3日 星期日

[C_MM250-易] 汽車油耗

[C_MM250-易] 汽車油耗

成績: 0 / 倒扣: 0.8
問題描述 :
一部汽車油箱容量為m公升,假如汽車行駛時每分鐘油耗為n公升,試問剛加滿油的汽車能行駛多少小時。例如,汽車油箱容量為24公升,汽車行駛時每分鐘油耗為0.04公升, 當此輛汽車加滿油後,能行駛多10.0小時。
輸入說明 :
輸入兩個數,用空白分開,依序代表汽車油箱容量及每分鐘油耗量。
例如:
24 0.04
輸出說明 :
輸出汽車行駛的小時數 ( 計算到小數 1 位,以下四捨五入 ) 。
例如:
10.0
範例 :

輸入範例輸出範例
24 0.0410.0
36 0.0610.0
36 0.0512.0

while True:  
    try:  
        m, n = map(float,input().split())  
        print(round(m / n / 60,1))  
    except(EOFError):  
        break

2020年5月2日 星期六

[C_MM249-易] 硬幣付錢方式

[C_MM249-易] 硬幣付錢方式

成績: 0 / 倒扣: 0.8
問題描述 :
小明某一天要去吃麵,已知身上只有 5 元、 10 元、 50 元硬幣各 4 個,假設一碗麵為 n 元,不可以找零錢,則他可以有幾種硬幣組合付錢方式呢 ? 請將所有可能的組合列出,每種組合,請列出 5 元、 10 元、 50 元硬幣各硬幣所需的數量;每種組合 ( 每一列 ) 由大到小排列。若無法付錢時,則輸出 null 。
例如一碗麵為 10 元答案如下 (5 元硬幣數量 , 10 元硬幣數量 , 50 元硬幣數量 ) :
2,0,0
0,1,0
輸入說明 :
輸入 1 整數,代表 1 碗麵的價錢。
例如:
10
輸出說明 :
列出所有可能的組合列出,每種組合。請列出 5 元、 10 元、 50 元硬幣各種硬幣所需的數量,用逗號分隔。每種組合 ( 每一列 ) 由大到小排列。若無法付錢時,則輸出 null 。
例如,輸出為:
2,0,0
0,1,0
範例 :

輸入範例輸出範例
102,0,0
0,1,0
253,1,0
1,2,0
2504,3,4
2,4,4
500null

m = int(input())
result = []
for i in reversed(range(0, 5)):
    for j in reversed(range(0, 5)):
        for k in reversed(range(0, 5)):
            if i*5 + j*10 + k*50 != m:
                continue
            else:
                result.append([i,j,k])
if len(result) == 0:
    print('null')
else:
    for i in range(len(result)):
        strs = ''
        for j in result[i]:
            strs += str(j)+','
        print(strs.strip(','))

[C_MM248-易] 貝氏法則

[C_MM248-易] 貝氏法則

成績: 0 / 倒扣: 0.8
問題描述 :
三個相同的盒子各裝有下列水果
盒子一 : 蘋果 3 個 哈密瓜 2 個 藍莓 3 個
盒子二 : 蘋果 6 個 哈密瓜 5 個 藍莓 5 個
盒子三 : 蘋果 9 個 哈密瓜 8 個 藍莓 7 個
今由任一盒中隨機抽出一水果,已知此抽出的水果為蘋果 , 則其自第三盒抽出的機率為何 ?
P(A) 代表水果從第 3 盒抽出的機率
P(B) 代表抽到 蘋果的機率
P( A ∩ B ) 代表從第 3 盒抽到 蘋果的機率
P(A| B) 代表抽到蘋果的條件下,並從第 3 盒抽出的機率。
已知貝氏法則為 P(A |B) = P( A ∩ B )/P(B)
P(A)= 1/3 = 0.33
P(B) = 1/3 * 3/8 + 1/3 * 6/16 + 1/3 * 9/24= 0.375
P( A ∩ B ) = 1/3 * 9/24 = 0.125
P(A | B) = 0.125/(1/3 * 3/8 + 1/3 * 6/16 + 1/3 * 9/24) = 0.333
計算任意 3 個盒子,每一盒中裝有許多蘋果、哈密瓜及藍莓,今由任一盒中隨機抽出一水果,已知此抽出的水果為蘋果 , 則其自第三盒抽出的機率為何 ?
輸入說明 :
輸入 3 列數字代表第 1 、 2 及 3 個水果盒,每一列數字用逗號分隔,依序代表 蘋果、 哈密瓜及藍莓的個數。
例如:
3,2,3
6,5,5
9,8,7
輸出說明 :
計算「出抽出的水果為蘋果 , 其自第三盒抽出的機率」 ( 取到小數點後 3 位 )
例如,輸出為:
0.333 ( 取到小數點後 3 位 )
範例 :

輸入範例輸出範例
1,2,3
4,5,6
7,8,9
0.333
17,13,4
9,11,6
8,14,13
0.213
4,7,9
6,9,9
9,6,7
0.476

while True:  
    try:  
        x = list(map(int,input().split(',')))  
        y = list(map(int,input().split(',')))  
        z = list(map(int,input().split(',')))  
        PA = 1/3  
        PB = PA*(x[0]/sum(x) + y[0]/sum(y) + z[0]/sum(z))  
        PAAB = PA*(z[0]/sum(z))  
        PAOB = PAAB/PB  
        print('%.3f' % round(PAOB,3))  
    except(EOFError):  
        break

2020年5月1日 星期五

[C_MM247-易] 環狀排列

[C_MM247-易] 環狀排列

成績: 0 / 倒扣: 0.8
問題描述 :
今天是小明的生日,他邀一群朋友去慶生 party ,已知有 n 個不同的人須圍桌而坐,且每個座位皆視為相同,只考慮每個人的相對位置關係,共有幾種座法 ?
假設 n = 3 人
則有 2 種座法
第一種 :  、 、  ( 視為同一種 )
第二種 : 、  、  ( 視為同一種 )
n 個人有 n!/n 種坐法
寫一程式計算輸入 n 個人,求共有幾種坐法 ? 若輸入是小於 0 的整數,其坐法為 0 種坐法。
輸入說明 :
輸入整數 n , n 可以是小於 0 的整數。
例如:
5
輸出說明 :
輸出共有 幾種坐法 ( 若輸入是小於 0 的整數,其坐法為 0 種坐法 ) :
例如
24
範例 :

輸入範例輸出範例
524
7720
-100

while True:  
    try:  
        num = int(input())  
        result = 1  
        if num > 0:  
            for i in range(1, num):  
                result *= i  
            print(result)  
        else:  
            print('0')  
    except(EOFError):  
        break

2020年4月30日 星期四

[C_MM246-易] 矩陣反轉

[C_MM246-易] 矩陣反轉

成績: 0 / 倒扣: 0.8
問題描述 :
請設計一程式,輸入一個陣列並且反轉後再輸出。

輸入說明 :
第一行先輸入矩陣的行、列,之後再輸入陣列元素。

輸出說明 :
反轉後的矩陣。

範例 :

輸入範例輸出範例
2 1
3
2

3 2
4 6
7 8
4 6

2 4
7 8 9 10
6 5 22 4

4 2
4 5
2 3
4 5
6 9
3 2

4 7 4
6 8 6

7 6
8 5
9 22
10 4

4 2 4 6
5 3 5 9

while True:  
    try:  
        r, c = map(int, input().split())  
        listo = []  
        for i in range(r):  
            m = list(map(int,input().split()))  
            listo.append(m)  
        for i in range(c):  
            strs = ''  
            for j in range(r):  
                strs = strs + str(listo[j][i]) + ' '  
            print(strs.strip())            
    except(EOFError):  
        break

2020年4月29日 星期三

[C_MM245-易] 找質數

[C_MM245-易] 找質數

成績: 0 / 倒扣: 0.8
問題描述 :
找出輸入範圍內的質數。

輸入說明 :
首先輸入一正整數N,代表範圍內的質數。
N < 100

輸出說明 :
輸出範圍內的質數結果,數字間需間隔一隔空白,最後換行顯示總共幾個質數。

範例 :

輸入範例輸出範例
52 3 5
3



while True:  
    try:  
        def is_prime(n):  
            i, max =2, n**0.5  
            while True:  
                if n==1:return False; break  
                if n==2:return True; break  
  
                if n % i ==0:return False; break  
                if i > max:return True; break  
                i += 1  
        N = int(input())  
        strs, j = '', 0  
        for i in range(N+1):  
            if is_prime(i):  
                strs +=str(i)+' '  
                j+=1  
        print(strs.strip())  
        print(j)  
    except(EOFError):  
        break

2020年4月26日 星期日

[C_MM243-易] 找出眾數

[C_MM243-易] 找出眾數

成績: 0 / 倒扣: 0.8
Problem Description
找出一串數列 ( 數字與數字間以空格區隔 ) 中出現最多次的數字。
例如: 1 2 2 3 5 6 1 2
則數字 2 出現最多次,共 3 次
Input Format
5 6 5 5 5 5 5 9 9
Output Format
5 6
第一個代表哪一個數字,第二個代表次數
Example
Sample InputSample Output
5 6 5 5 5 5 5 9 95 6

  
while True:
    try:
        nums = list(map(int,input().split()))
        data = {}
        for i in range(len(nums)):
            if nums[i] in data.keys():continue
            data.update({nums[i]:nums.count(nums[i])})
            #print(data)
        for key,value in data.items():
            if value == max(data.values()):
                print('%d %d' % (key,value))
    except(EOFError):
        break

2020年4月23日 星期四

[C_MM241-易] 平均值與標準差

[C_MM241-易] 平均值與標準差

成績: 0 / 倒扣: 0.8
問題描述
寫一個程式輸入一組數字,然後計算這組數字的平均值與標準差。假設輸入之數值為: x1, x2, …, xN (皆為整數),則平均值( µ )與標準差( s)計算公式為:
 C_MM241-1.JPG
輸入說明
輸入一組至多 20 個整數的數字,相鄰兩個整數以單一空白區隔。
輸出說明
輸出平均值 µ 與標準差 s ,第一行輸出: Mean = µ ,第二行輸出: Deviation = s 。等號前後各留一個空白。 µ 與 s 取小數點後兩位。
範例
Sample Input:Sample Output:
10 15 20 24 18
20 40 15 24 18 30

Mean = 17.40
Deviation = 4.72
Mean = 24.50
Deviation = 8.40

while True:  
    try:  
        num = list(map(int,input().split()))  
        u = round(sum(num) / len(num),2)  
        s = 0  
        for i in range(len(num)):  
            s= s + ((num[i] - u )**2 / len(num))  
        print('Mean = %.2f' % round(u,2))  
        print('Deviation = %.2f' % round(s**0.5,2))  
    except(EOFError):  
        break

2020年4月22日 星期三

[C_MM239-中] 找除數

[C_MM239-中] 找除數

成績: 0 / 倒扣: 0.8
問題描述
一個數的除數表示小於等於這個數又能整除這個數的數字,例如 8 的所有除數為: 1, 2, 4, 8 。寫一個程式給定一個數字範圍,找出在這個範圍內哪個數字的除數最多。由於數字會很大,範圍也不小,你的程式必須很有效率。
輸入說明
輸入一個數字範圍 L 至 U ,中間以單一空白區隔。 L 與 U 均為正整數,且滿足 1 <= L <= U <= 1000000000 , 0 <= U-L <= 10000 。
輸出說明
找出 L 至 U 之間,包含 L 與 U ,除數最多的數字。如果存在多個除數最多的數字,則以最小的那個數字表示。例如結果為 P ,除數共 N 個,則輸出格式為: P has a maximum of N divisors 。
範例
Sample Input:Sample Output:
1 10
999999900 1000000000
6 has a maximum of 4 divisors
999999924 has a maximum of 192 divisors


    填上程式碼
  

2020年4月21日 星期二

[C_MM237-中] 多項式的微分

[C_MM237-中] 多項式的微分

成績: 0 / 倒扣: 0.8
問題描述
一個多項式可以用下列通式表示:
f(x) = Cnxn + Cn-1xn-1 + . . . + C1x1 + C0x0
其中 Cn 表示 x 的 n 次項係數, Cn 為包含零的任意正負整數,而 n 為包含零的任意正整數。而 f(x) 的微分可表示成:
f ¢ (x)=nCnxn-1 + (n-1)Cn-1xn-2 + . . . + C1
請寫一個程式輸入一個多項式,然後輸出這個多項式的微分方程式。多項式輸入方式為指定所有非零係數項的係數數值與該次項的冪次方,冪次方由大至小依序指定。相鄰數字請用單一空格區隔。例如多項式 f(x) = 2x4 + 10x2 – 5x1 – 10x0 的輸入方式為: 2 4 10 2 -5 1 -10 0 。這個多項式的微分方程式輸出格式為:
8x^3+20x^1–5
每一項包含係數(含正負符號)、變數 x 、符號 ^ (表示次方)以及冪次方,請避免一個數字前面同時出現正負符號。項與項之間不必留空格。
輸入說明
輸入一個多項式所有非零係數項的係數數值(任意不為零的正負整數)與該次項的冪次方( 0 或任意正整數)。
輸出說明
輸出多項式的微分方程式。
範例
Sample Input:Sample Output:
1 4 -2 3 -5 0
-2 5 6 2 -10 1
4x^3-6x^2
-10x^4+12x^1-10

while True:  
    try:  
        m = list(map(int,input().split()))  
        r = []  
        for i in range(len(m)//2):  
            if m[2*i + 1]*m[2*i] == 0:  
                break  
            else:  
                r.append(m[2*i + 1]*m[2*i])  
                r.append(m[2*i + 1] - 1)  
        #print(r)  
        rs = ''  
        for i in range(len(r)//2):  
            if r[2*i + 1] == 0:  
                strs = '+' + str(r[2*i]) if r[2*i] > 0 else str(r[2*i])  
            else:  
                if i == 0:  
                    strs = str(r[2*i]) +'x^' + str(r[2*i + 1])  
                else:  
                    if r[2*i] > 0:  
                        strs = '+' + str(r[2*i]) + 'x^' + str(r[2*i + 1])  
                    else:  
                        strs = str(r[2*i]) + 'x^' + str(r[2*i + 1])  
            rs += strs  
        print(rs)  
    except(EOFError):  
        break

2020年4月20日 星期一

[C_MM236-中] 多項式的運算

[C_MM236-中] 多項式的運算

成績: 0 / 倒扣: 0.8
問題描述
一個多項式可以用下列通式表示:
f(x) = Cnxn + Cn-1xn-1 + . . . + C1x1 + C0x0
其中 Cn 表示 x 的 n 次項係數, Cn 為包含零的任意正負整數,而 n 為包含零的任意正整數。請寫一個程式輸入一個多項式,輸出代入某個 x 的數值,求得多項式的運算結果。多項式輸入方式為指定所有非零係數項的係數數值與該次項的冪次方,冪次方由大至小依序指定。相鄰數字請用單一空格區隔。例如多項式 f(x) = 2x4 + 10x2 – 5x1 – 10x0 的輸入方式為: 2 4 10 2 -5 1 -10 0 。則代入數值 1 ,多項式的運算結果為 -3 。
輸入說明
第一行輸入一個多項式所有非零係數項的係數數值(任意不為零的正負整數)與該次項的冪次方( 0 或任意正整數,最大值為 10 ),第二行輸入代入此多項式的數值(任意正負整數)。
輸出說明
求得代入給定數值後多項式的運算結果。
範例
Sample Input:Sample Output:
2 4 10 2 -5 1 -10 0
2
1 3 -1 0
3
52
26

while True:  
    try:  
        m = list(map(int,input().split()))  
        x = int(input())  
        result = 0  
        for i in range(len(m)//2):  
            result += (m[2*i])*(x**m[2*i + 1])  
        print(result)  
    except(EOFError):  
        break

2020年4月19日 星期日

[C_MM235-中] 三點求圓

[C_MM235-中] 三點求圓

成績: 0 / 倒扣: 0.8
問題描述
在平面二維座標中給定不在同一直線上的三點,可求得通過這三點的唯一圓。如下圖所示,給定 A, B, C 三點座標( x 軸與 y 軸),可利用 AB, BC 與 AC 線段,利用中垂線的交會點求得圓形的中心座標( rx 與 ry )。若這個圓的半徑為 r ,則這個圓可利用方程式: (x - rx)2 + (y - ry)2= r2 表示。請寫一個程式,要求輸入三點不在一直線的座標,求得通過此三點的圓其中心座標與半徑。
C_MM235.JPG
輸入說明
要求輸入一行數字包含三個點的 x 與 y 軸的座標,共 6 個數字。每個數字可以為 0 或任何正負整數,數字間以單一空格分開。
輸出說明
於輸入數字的下一行輸出圓的中心點 x 軸與 y 軸座標,以及圓的半徑。每個輸出的數字以小數點取後三位數的方式呈現,並以單一空格與後方數字分隔。

範例
Sample Input:Sample Output:
7 -5 -1 1 0 -6
3.000 -2.000 5.000
1 7 8 6 7 -2
3.921 2.447 5.409

填上程式碼

[C_MM234-易] 找尋雙胞胎質數

[C_MM234-易] 找尋雙胞胎質數

成績: 0 / 倒扣: 0.8
找尋雙胞胎質數
Problem Description所謂的雙胞胎質數,指的是相差為 2 的質數。例如 (17,19) 就是一對雙胞胎質數。請你寫一隻程式,找出某個區間 [a,b] 中的雙胞胎質數對。例如 [a,b] = [20, 100] ,則雙胞胎質數對有:
(29,31)
(41,43)
(59,61)
(71,73)
Input File Format輸入只有一行,這一行中包含了 2 個整數 a 及 b ,這兩個整數以逗號隔開。整數 a 為區間的下限。整數 b 為區間的上限,兩個整數間沒有空白且 1<=a,b<=1000000 。
Output Format輸出 [a,b] 區間中所有的雙胞胎質數對。每一行一個質數對,質數對用小括號括起來(見底下的範例),兩個質數間用逗點分隔,且中間不需要包含空白。
Example
Sample Input:Sample Output:
20,100


(29,31)
(41,43)
(59,61)
(71,73)

while True:  
    try:  
        def is_prime(n):  
            i, max =2, n**0.5  
            while True:  
                if n==1:return False; break  
                if n==2:return True; break  
  
                if n % i ==0:return False; break  
                if i > max:return True; break  
                i += 1  
  
        m, n = map(int,input().split(','))  
        primes = []  
        for i in range(m, n):  
            if is_prime(i):  
                primes.append(i)  
        for i in range(len(primes) - 1):  
            if abs(primes[i] - primes[i+1]) == 2:  
                print('(%d,%d)' % (primes[i],primes[i+1]))  
    except(EOFError):  
        break

2020年4月18日 星期六

[C_MM233-易] 計算複利

[C_MM233-易] 計算複利

成績: 0 / 倒扣: 0.8
計算複利
Problem Description你每個月存 10000 元到銀行中,銀行的每月利率為 0.1% ,以複利計算,請問 3 個月後,你的帳戶為多少錢?
底下的表格示範了如何得到第 3 個月時,帳戶中的本利和(本金 + 利率總合)。
月份月初金額月底本利和備註
第一個月1000010010月初存入 10000 元。
利息為 10000 * 0.1% = 10
所以本利和為 10010
第二個月2001020030.01第二個月再存入 10000
加上前一個月的 10010
所以月初有 20010 元
第三個月30030.0130060.04001所以第 3 個月時,本利和為 30060.04001 元。
我們定義底下幾個符號:
r: 每期利率。以前例而言, r = 0.1%
n: 期數。以前例而言, n = 3
p: 每期投入金額。以前例而言 p = 10000
現在,給你前述的三個值(即 r, n 及 p ),請計算期末的本利和。以前例而言,期未的本利合為 30060.04001 元。
Input File Format輸入有 3 行。第一行為 r ,為浮點數值。第二行為 n ,為一整數。第三行為 p ,為一整數。
Output Format輸出本利和,請將數值以「整數」表示(無條件捨去)
Example
Sample Input:Sample Output:
0.001
3
10000
30060

while True:
    try:
        r = float(input())
        n = int(input())
        p = int(input())
        temp = p
        for i in range(n):
            m = temp*(1 + r)
            temp = p + m
        print(int(m))
    except(EOFError):
        break

[C_MM232-易] 判斷日期是否正確

[C_MM232-易] 判斷日期是否正確

成績: 0 / 倒扣: 0.8
判斷日期是否正確
Problem Description給定一個日期(以 yyyy-MM-dd 的格式來表示),請寫一支程式判斷這個日期是否正確。舉例而言:
2012-02-29 :正確
2011-02-29 :不正確,因為 2011 年的 2 月只有 28 天
-1111-02-29 :不正確,因為年不可能為負數
2011-13-29 :不正確,因為月份不可能超過 12
2011-01-32 :不正確,因為 1 月不會有 32 天
Input File Format輸入的第一行為一個整數 n ,代表底下測資的個數( n<=10 )。
之後有 n 行字串。每一行字串為一日期,日期以 yyyy-MM-dd 的格式表示。
Output Format輸出每一個測資是否為正確的日期,若為正確的日期,請輸出 true ,否則請輸出 false (均小寫)
Example
Sample Input:Sample Output:
5
2012-02-29
2011-02-29
-1111-02-29
2011-13-29
2011-01-32

while True:
    try:
        month_day = [29, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        def Runnian(y):
            return True if y % 400 == 0 or(y % 4 == 0 and y % 100 !=0) else False
        N = int(input())
        for i in range(N):
            data = list(map(str,input().split('-')))

            if len(data) > 3: # 
                print('false')
            else:
                if int(data[1]) > 12: # 檢查月份
                    print('false')
                else:
                    if Runnian(int(data[0])): # 檢查天數 如果是閏年
                        if int(data[1]) ==2 and int(data[2]) <= month_day[0]:
                            print('true')
                        elif int(data[2]) <= month_day[int(data[1])]:
                            print('true')
                        else:
                            print('false')
                    else:
                        print('true') if int(data[2]) <= month_day[int(data[1])] else print('false')
    except(EOFError):
        break

2020年4月17日 星期五

[C_MM230-中] 螺旋矩陣對角線值

[C_MM230-中] 螺旋矩陣對角線值

成績: 0 / 倒扣: 0.8
螺旋矩陣對角線值
問題描述
底下是一個 5*5 的螺旋矩陣。我們將對角線上的數值用紅色標出來。可以知道對角線的值相加後為 101 ( i.e., 1+3+5+7+9+13+17+21+25 = 101 )。
2122232425
2078910
1961211
1854312
1716151413
現在,給你一個 k*k 的螺旋矩陣( k 為奇數),請計算出其對角線值的加總。
註:本題取自 Project Euler , Problem 28 ( http://projecteuler.net/problem=28) 。
輸入說明
輸入一個 k 值, k 必為奇數。 k<=2001
輸出說明
計算 k*k 螺旋矩陣的對角線值總合,並輸出。
範例
Sample Input:Sample Output:
5101

while True:
    try:
        N = int(input())
        n, j ,sum = 1, 2, 1
        while True:
            if n >= N**2:break
            for i in range(4):
                n += j
                sum += n
            j+=2
        print(sum)
    except(EOFError):
        break

2020年4月16日 星期四

[C_MM229-中] 生存之道

[C_MM229-中] 生存之道

成績: 0 / 倒扣: 0.8
問題描述:
一位數學家在蠻荒探險,在部落做客,卻遇到外族強力來犯,酋長帶著族人和數學家總共3 1 人,一同被圍困在一個山洞內,正面臨著無可避免的失敗 ,他們下定決心, 不成功便成仁 ,寧死不降 。於是他們決定安排自己在一圓圈上,其中酋長被指為 1 號, 然後開始進行他們的決定 ,方法是順時針方向由 1 號算起, 每二人按順序自殺, 直到所有人都死光為止。 很明顯的第一圈之 2 , 4 , ... , 28, 30 相繼自殺, 接下來的是誰 ? 應該是 32 號嗎 ? 但他們才只有 31 人, 所以 32 除以 31 餘數是 1 , 接下來應該是輪到 1 號 , 再接下來的並不是 3 號,因為 2 號和 4 號剛才己經自殺身亡了, 我們這次不算他們,所以下一個是跳過 3 號的 5 號 ,依此類推。數學家不想平白死掉,但是又怕族人笑他懦弱,因此,他立即算出自己應該站在那一位置才是最後輪到的,如此他就不必犧牲了。我們不來評斷數學家的勇氣 , 僅就其數學層面來看,以一般的討論來看 , 我們假設有 N 人排成一圈 , 每二人退出圈 , 用 L ( N )表示最後留下來的人。
輸入說明:
ex:
輸入 input.txt 含總人數 N
13
結果 L(13) 請寫入 output.txt
11
輸出輸入測試資料
11
33
41
93
105
117
1311

while True:
    try:
        N = int(input())
        p, k = [i for i in range(1,N+1)], 2 # k是爆炸數
        index = 0
        while len(p) != 1:
            index =(index + (k-1))%len(p)
            del p[index]
        print(p[0])
    except(EOFError):
        break

2020年4月15日 星期三

[C_MM228-易] 圖形數

[C_MM228-易] 圖形數

成績: 0 / 倒扣: 0.8

問題描述:

圖形數

Type

1st

2nd

3rd

4th

5th

6th

三角數

Value

1

3

6

10

15

21

四角數

Value

1

4

9

16

25

36

五角數

Value

1

5

12

22

35

51

nth x - gonal number 表示

輸入說明:

ex:

輸入 input.txt 含多角數 x 階層數 n

5 5

結果請寫入 output.txt

35

輸出輸入測試資料

1 1

1

3 2

3

3 3

6

3 4

10

4 2

4

4 3

9

4 4

16


while True:
    try:
        x, n = map(int,input().split())
        num = 0
        end = (n - 1)*(x - 2) + 1
        step = x-2 if x-2 > 0 else 1
        for i in range(1, end+1, step):
            num += i
        print(num)
    except(EOFError):
        break

[C_MM227-易] 對角線

[C_MM227-易] 對角線

成績: 0 / 倒扣: 0.8
問題描述 :
在 Thinking Mathematically 這本書裡,有一道題:「方格紙上畫上一個三格乘以五格的長方形,並且連起一條對角線。有多少方格和對角線接觸?」
首先考慮長和寬互質 ( 最大公因數是 1) ,試著畫畫如右圖,並數一數接觸的方格數,將結果列表如下表。
C_MM227.JPG

輸入說明 :
長 x 寬 y:如 5 3

輸出說明 :
對角線接觸到的方格數量 7

範例 :

輸入範例輸出範例
2 12
3 13
4 14

參考資料:昌爸工作坊

while True:
    try:
        m, n = map(int,input().split())
        print(m+n-1)
    except(EOFError):
        break

2020年4月14日 星期二

[C_MM226-易] 薪水問題

[C_MM226-易] 薪水問題

成績: 0 / 倒扣: 0.8
問題描述:
阿哲是一個半導體公司的員工,他每個月的底薪是 36000 ,他每天的工時為 12 小時,一個月標準工作 15 天,若有加班每個小時 400 塊,若在非上班時段開會則每個小時 300 塊,低於標準工時則每小時扣 200 塊請設計出一個程式計算他每個月的薪水。
輸入說明:
輸入當月上班時數及開會時數
輸出說明:
輸出當月實得薪資
範例:
Sample Input:Sample Output:
180
5
37500

while True:
    try:
        work = int(input())
        meet = int(input())
        if work > 180:
            money = 36000+ 400*(work-180)
        else:
            money = 36000 - 200*(180-work)
        print(money+meet*300)    
    except(EOFError):
        break