基礎
a001_hello
baby 👶
題目來源:a001
題解:
題目敘述:學習所有程式語言的第一個練習題
請寫一個程式,可以讀入指定的字串,並且輸出指定的字串。
比如:輸入字串 "world", 則請輸出 "hello, world"
題解:寫一個程式可以輸入東西,並且輸出你輸入的東西
Code
1 | x=input() |
a002 簡易加法
baby 👶
題目來源a002
題解:
題目說要輸入兩個數字(a&b),要輸出a+b的值
要注意輸入的type:int
輸入方法
因為題目有說輸入只有一列,且包含兩個數字以空白隔開
map語法是搭配split使用的
split()的兩個括號裡面是代表說,這段資料是以甚麼元素作為分割,像是3.14要用小數點做分割就要寫split(".")
1 | x=map(int,input().split()) |
再加加法的程式sum1=a+b#記得不要把代數的名字取成python內建函式的名字喔
1 | x=map(int,input().split()) |
插句話,你們先到目錄裡的其他裡面的第一個item看,我有教我以後要用的輸入法
a003 兩光法師占卜術
baby 👶
題目來源a003
題解:
這題題目要求的是輸入M(月)D(日),並且計算S值(M2+D)%3(可以說是M2+D除三的餘數),如果S=0 輸出"普通"
& S=1 輸出"吉"
& S=2 輸出"大吉"
1 | from sys import stdin |
a004 文文的求婚
baby 👶
題目來源a004
解題
題目說要找是平年還是閏年,並且輸入年分到EOFError(去看其他的第一點stdin輸入法),我們先講閏年跟平年的分法,閏年:能被4整除但不能被100整除,或者能被400整除的年份;除了閏年就是平年,我們分成兩的部分講
輸入方式:
1 | from sys import stdin |
判斷式:
1 | if (year%4==0 and year%100!=0) or year%400==0: |
最終合起來我們可以得到:
1 | from sys import stdin |
a005 Eva的回家作業
easy😎
題目來源a005
解題
題目說輸入一個n,代表說接下來要輸入幾次,並且要求輸入的數列(都有四項)的第五項,我們拆成輸入跟主程式來講
輸入:
1 | from sys import stdin |
主程式
1 | if data[1]-data[0]==data[3]-data[2]:#判斷是否為等差數列 |
合起來就是:
1 | from sys import stdin |
a006 一元二次程式
題目來源a006
easy😎
解題
我們不要想太困難的東西,直接套公式(-b±√b^2-4ac)/(2a)
,還有分辨是否有實數解,還是一個姐還是兩個解
輸入方法:
1 | from sys import stdin |
主程式:
1 | if b**2-4*a*c<0:#無實數解 |
結合在一起就是:
1 | from sys import stdin |
e289 美麗的彩帶(apcs第三題)
hard 🚨
題目來源e289
解題
這是apcs第三題的題目,代表說這題要演算法,這我使用滑窗(我可以用len去查list的長度判斷這個窗口裡面是否為彩色彩帶)搭配二分搜的演算法,可以大大降低使用時間,import bisect
可以使用在二搜上的python函式,主要使用bisect.bisect_left(data,n)
(尋找n在data序列裡面可以插入的位置(data一定要是嚴格遞增)),我分解成四個來講:
- 輸入法&叫出函式庫:
1 | from sys import stdin |
- 製作第一個滑窗(window)
1 | def make_first_window(data): |
- 製作下一個窗口的判斷式:
1 | def make_window(L,R,window,data): |
- 主程式:
1 | window=make_first_window(data) |
合起來就是:
1 | from sys import stdin |
f313 人口遷移(apcs第二題)
medium 🤏
題目來源f313
解題
題目說一個2Dlist,不為-1的元素data[i][j]
每天都要往上下左右不為-1的程式遷移data[i][j]//k
個人,我們首先要想一個問題,如果我的data[i][j]
往旁邊看時超出list該怎麼辦,有兩種可能,略過或把城市包起來(用-1,因為-1不會計入運算),我這邊選擇後者(前者判斷是太多),我分成幾部分來講:
- 輸入方法:
1 | from sys import stdin |
- 每晚城市移動的程式;
1 | def move(data): |
- 主程式:
1 | for _ in range(m): data=move(data) |
合起來就是:
1 | from sys import stdin |
其他
stdin輸入法
我這裡要教stdin輸入法,請大家先把from sys import stdin
背起來,很重要,請第一行程式就打這個
我們成幾類來講
- 輸入一個元素:
n=int(stdin.readline())
- 輸入兩個元素or多個元素
n,m=map(int,stdin.readline().strip().split())
n,m,k=map(int,stdin.readline().strip().spllit())
以此類推 - 輸入list
data=list(map(int,stdin.readline().strip().split()))
- 輸入到EOFError(ctrl+D)
for line in stdin: n=int(line.strip())
為什麼選這個輸入法呢
因為在大資料輸入時,這樣方便且便捷很多(版主常用這個輸入法懶得改)
回目錄–>
說些什麼吧!