總網頁瀏覽量

2019年10月25日 星期五

108學年度第一學期Q2
















Python Code:
@ 此code是針對(b),但這題目的數字太大了,跑不出來,數字小一點才可以!!!

import numpy as np
import time

n =4
s = np.array(range(1,n+1))
#print(s)

tStart = time.time()#計時開始

flag=0
for i in range(2 ** len(s)):#子集的個數
    combine = []
    for j in range(len(s)):#用來判斷二進制數的下標爲j的位置的數是否爲1
        if (i >> j) % 2:
            combine.append(s[j])
    for k in range(0,len(combine)):
        for l in range(k+1,len(combine)):
            if (combine[k]+combine[l])==3:
                print(combine)
                flag+=1
            else:
                continue
            
tEnd = time.time()#計時結束

print((2**n)-flag)
print("It cost %f sec" % (tEnd - tStart))#會自動做近位





2019年10月24日 星期四

列出集合的所有子集合


print("請輸入一個集合,將列所有的子集合:")
s=input().split()
sk=[x for x in s]
n=len(sk)
for i in range(2**n):
    subset=[]
    for j in range(n):
        if (i>>j)%2:
            subset.append(sk[j])
    print(subset)




2019年10月3日 星期四

2015年 IMO 第二題
















Python  Code:

two=[]
for i in range(100):
    two.append(2**i)
    
for a in range(1,100):
    for b in range(1,100):
        for c in range(1,100):
            s1=a*b-c
            s2=b*c-a
            s3=c*a-b
            if (s1>0) and (s2>0) and (s3>0):
                if (s1 in two) and (s2 in two) and (s3 in two):
                    print(a,b,c)


答案:
2 2 3
2 3 2
2 6 11
2 11 6
3 2 2
3 5 7
3 7 5
5 3 7
5 7 3
6 2 11
6 11 2
7 3 5
7 5 3
11 2 6
11 6 2