-
完美立方
描述
費馬大定理斷言:當整數n>2時,關於a,b,c的方程an=bn+cn沒有正整數解。該定理被提出后,歷經三百多年,經歷多人猜想辯證,最終在1995年被英國數學家安德魯·懷爾斯證明。當然,可以找到大於1的4個整數滿足完美立方等式:a3=b3+c3+d3(例如123=63+83+103)。編寫一個程序,對於任意給定的正整數N(N ≤100),尋找所有的四元組(a,b,c,d),滿足a3=b3+c3+d3,其中1<a,b,c,d≤N。
輸入格式
輸入一個正整數N(N<=100),
輸出格式
按照a的值從小到大,每行輸出一個完美立方等式,其中b,c,d按照非降序排列輸出。若兩個完美立方等式中a的值相同,則b的值小的先輸出;在b值相等的情況下,c值小的先輸出;在b,c都相等的情況下,d值小的先輸出。
輸入輸出示例
輸入 輸出 示例 1 24 Cube = 6,Tripe = (3,4,5)
Cube = 12,Tripe = (6,8,10)
Cube = 18,Tripe = (2,12,16)
Cube = 18,Tripe = (9,12,15)
Cube = 19,Tripe = (3,10,18)
Cube = 20,Tripe = (7,14,17)
Cube = 24,Tripe = (12,16,20)N= int(input()) for a in range(2,N+1): for b in range(2,N+1): for c in range(b,a): for d in range(c,a): if a**3==b**3+c**3+d**3: print("Cube = {},Tripe = ({},{},{})" .format(a,b,c,d))
- 70038003300381586927272753
雞兔同籠
描述
一個籠子里面關了若干只雞和兔子(雞有2只腳,兔子有4只腳,沒有例外)。已經知道了籠子里腳的總數為a,則籠子里面至少有多少只動物,至多有多少只動物?
輸入格式
第1行輸入一個正整數n(n≤1000),表示測試數據的組數n,接下來n組測試數據每組一行,每行一個正整數a(a<32768)。提示: 輸入使用input(),不要增加額外的提示信息 。
輸出格式
輸出包含n行,每行對應一個輸入,包含兩個正整數,第一個是最少的動物數,第二個是最多的動物數,兩個正整數之間用一個空格分開。輸出包含n行,每行對應一個輸入,包含兩個正整數,第一個是最少的動物數,第二個是最多的動物數,兩個正整數之間用一個空格分開。 如果沒有滿足要求的答案,則輸出兩個0。
輸入輸出示例
輸入 輸出 示例1 2
3
20
0 0
5 10
n=int(input()) l=list() for i in range(n): a=int(input()) if a%2!=0: min=max=0 else: j=a/4 t=a%j/2 min=int(t+j) max=int(a/2) l=l+[(min,max)] for b,c in l: print(b,c)
-
算24
描述
給出4個小於10的正整數,可以使用加、減、乘、除4種運算以及括號把4個數連接起來得到一個表達式。現在問題是,是否存在一種方式使得所得表達式的結果等於24。
這里加、減、乘、除以及括號的運算結果和運算優先級跟平常定義一致。
例如,對於5,5,5,1,可知5×(5-1/5)=24。又如,對於1,1,4,2無論如何都不能得到24
輸入格式
在代碼中的輸入部分輸入4個小於10的正整數。輸入使用input(),不要增加額外的提示信息。
輸出格式
對於每一組測試數據,輸出一行,如果可以得到24,輸出"YES"其算法;否則“NO”。
輸入輸出示例
輸入 輸出 示例 1 5
5
5
1
YES
((5-(1/5))*5)示例2 1
1
1
1
NO from itertools import permutations n1 = input() n2 = input() n3 = input() n4 = input() n = n1+n2+n3+n4 sum = 1 for i in n: sum *= eval(i) if sum < 24: print("NO") exit() notation = ['+', '-', '*', "/"] st = set() num = 0 number = set(permutations(n)) for i in notation: s = i t1 = notation.copy() t1.remove(i) for j in t1: s += j t2 = t1.copy() t2.remove(j) for p in t2: s += p st.add(s) s = i+j s = i newst = set() for i in number: for j in st: newst.add(i[0]+j[0]+i[1]+j[1]+i[2]+j[2]+i[3]) all = set() for i in newst: i1 = '('+i[0:3]+')'+i[3:] i2 = i[0:2]+'('+i[2:5]+')'+i[5:] i3 = i[0:4] + '(' + i[4:] + ')' i4 = '(('+i[0:3]+')'+i[3:5]+")"+i[5:] i5 = i[0:2]+'(('+i[2:5]+')'+i[5:]+")" i6 = '(' + i[0:2] + '(' + i[2:5] + '))' + i[5:] i7 = i[0:2]+'('+i[2:4]+'('+i[4:]+"))" all.add(i1) all.add(i2) all.add(i3) all.add(i4) all.add(i5) all.add(i6) all.add(i7) result = [] for i in all: try: if eval(i) == 24: result.append(i) except: pass print("YES") print("("+sorted(result)[0]+")")
- 3003000370038003300381586927332087
溫度轉換異常處理
描述
溫度的刻畫有兩個不同體系:攝氏度(Celsius)和華氏度(Fabrenheit)。
請編寫程序將用戶輸入華氏度轉換為攝氏度,或將輸入的攝氏度轉換為華氏度。
轉換算法如下:(C表示攝氏度、F表示華氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 輸入輸出的攝氏度采用大寫字母 C 或小寫字母 c 結尾,溫度可以是整數或小數,如:12.34C 指攝氏度 12.34 度;
(2) 輸入輸出的華氏度采用大寫字母 F 或小字字母 f 結尾,溫度可以是整數或小數,如:87.65F 指華氏度 87.65 度;
(3) 考慮異常輸入的問題,如輸入不合法則拋出異常;
(4) 使用input()獲得測試用例輸入時,不要增加提示字符串。
輸入格式
輸入一個帶單位的溫度
輸出格式
輸入正常,輸出轉換后的溫度,保留小數點后2位小數。
當用戶輸入值末位不是“C、c、F、f”中的一個時,輸出"輸入錯誤,末位只能是'C','c','F','f'"
當檢測到NameError錯誤時輸出'試圖訪問的變量名不存在'
當檢測到SyntaxError 錯誤時輸出'存在語法錯誤'
輸入輸出示例
輸入 輸出 示例 1 102F
102D
AC
102ff
38.89C
輸入錯誤,末位只能是'C','c','F','f'
試圖訪問的變量名不存在
存在語法錯誤
try: n=input() if n[-1] in ['F','f']: C=(eval(n[0:-1])-32)/1.8 print("{:.2f}C".format(C)) elif n[-1] in ['C','c']: F=eval(n[0:-1])*1.8+32 print("{:.2f}F".format(F)) else: print("輸入錯誤,末位只能是'C','c','F','f'") except NameError: print("試圖訪問的變量名不存在") except SyntaxError: print("存在語法錯誤")
-
a除以b
描述
計算a除以b,結果四舍五入,保留2位小數。
輸入格式
輸入包括兩行, 每行一個實數, b不能等於0
輸出格式
正常計算結果為一個實數,當用戶輸入b為0時輸出"除零錯誤"
輸入輸出示例
輸入 輸出 示例 1 5
05
3除零錯誤
1.67
a=float(input()) b=float(input()) if b==0: print("除零錯誤") else: c=a/b print("{:.2f}".format(c))
- 00370038003300381586927389932
2的n次方
描述
計算2的n次方,n由用戶輸入
輸入格式
輸入一個正整數
輸出格式
輸出一個正整數
輸入輸出示例
輸入 輸出 示例 1 5 32 n=int(input()) print(2**n)
- 038003300381586927407654
階乘
描述
用戶輸入一個正整數,計算其階乘
輸入格式
輸入一個正整數
輸出格式
一個正整數
輸入輸出示例
輸入 輸出 示例 1 5 120 def fact(n): if n == 0: return 1 else: return n * fact(n-1) num = eval(input("")) print(fact(abs(int(num))))
- 0370038003300381586927423589
階乘求和
描述
求1!+2!+3!+...的前n項的和,n從鍵盤輸入
輸入
一個正整數n
輸出
從1到n每個數的階乘的和
例如:
輸入:5
輸出:153
a=0 def fact(n): if n == 0: return 1 else: return n * fact(n-1) num = eval(input("")) for i in range(1,num+1): a=a+fact(abs(int(i))) print(a)
- 000370038003300381586927453743
表達式求值
描述
已經a,b,c的值分別為5,8和3,利用以下公式計算並輸出x的值。
輸入格式
該題目沒有輸入
輸出格式
一個數值
a=5 b=8 c=3 import math x=(-b+math.sqrt(b*b-4*a*c))/(2*a) print(x)
- 0370038003300381586927478053
計算階乘
描述
輸入一個正整數,輸出其階乘值。
輸入格式
輸入一個正整數
輸出格式
輸出階乘結果
輸入輸出示例
輸入 輸出 示例 1 6 720 def fact(n): if n == 0: return 1 else: return n * fact(n-1) num = eval(input("")) print(fact(abs(int(num))))