飆程式網 第零級 1000~1018 Python 題解

飆程式網!  Python 解題  ( http://khcode.m-school.tw/ )

第零級 (測試用) 1000~1018 題解公開

讀取測試資料 可以用 ipput() 指令
====================================
# 1000 [語言] 第一支程式
-------------------------------------------------------------
(問題敘述 )
只要能夠成功編譯,就能獲得滿分,超好賺的
(不必做任何計算, 也不能做任何輸入、輸出!)
-------------------------------------------------------------
(題 解)
PY2 / PY3:
(什麼都不用) 直接上傳
-------------------------------------------------------------
# 1003 [語言] 字串之輸入與輸出操作
-------------------------------------------------------------
(問題敘述 )
來試試字串的輸入以及輸出吧!
輸入共有一列,包含一個由英文字母大小寫與數字組成的字串 S,字串的長度至少為1。

測試資料 1,字串的長度不超過10。
測試資料 2,字串的長度不超過100。
測試資料 3,字串的長度不超過10000。
測試資料 4,字串的長度不超過1000000。
-------------------------------------------------------------
(題 解)
ipline=input()
print(ipline)
print(ipline)
-------------------------------------------------------------
# 1004 [語言] 簡單的數值運算
----------------------------------------
(問題敘述 )
來試試看用程式語言當計算機好了
請依照輸出格式輸出計算後所得的答案
設 f(x) = x^3 + 3x^2 + 7x + 4

(上式中的 a^b 表示 a 的 b 次方之意,
優先順序較加法與係數運算高,
也即 f(x) = (x^3) + 3(x^2) + 7(x) + 4)
-----------------------------------------------------------
(題 解)
# x=13
x=int(input())
y = (x**3) + 3*(x**2) + 7*x + 4
print(y)
-----------------------------------------------------------
# 1005 [語言] 複雜的數值運算
----------------------------------------
(問題敘述 )
來試試看用程式語言當計算機好了
請依照輸出格式輸出計算後所得的答案
設 f(x,y,z) = - (x^3) + y*(x^2) - z*x + 4

(上式中的 a^b 表示之意,與題目1004相同)
-----------------------------------------------------------
(題 解)
ipline =input()
# ipline='3 7 5'
ipline=' '+ipline+' '

numlist=[]
strlen=len(ipline)
c=0 ;k=0 ; l=0;  r=0

for i in range(strlen):
    if ipline[i]==' ':
        l=k; r=i
        k=r
        c=c+1
        if c>1 :
            numlist.append(int(ipline[l+1:r]))

x=numlist[0]
y=numlist[1]
z=numlist[2]
# print(x,y,z)
f= - (x**3) + y*(x**2) - z*x + 4

print(f)
-----------------------------------------------------------
# 1006 [語言] 
----------------------------------------
(問題敘述 )
設 f(x) 由以下程序定義:
(a) 若 x > 0, 則 f(x) = x^3 + 3x^2 + 7x + 4
(b) 若 x <= 0, 則 f(x) = 2x^3 - x^2 - 2

輸入說明 
輸入共有一列
其中包含整數 X。
(|X| <= 1000)

輸出說明 

請輸出 f(X)
-----------------------------------------------------------
(題 解)
x=int(input())
# x=5

if x>0 :
    f= x**3 + 3*x**2 + 7*x + 4
if x<= 0:
    f= 2*(x**3 )- x**2 - 2

print(f)
-----------------------------------------------------------
# 1007 [語言] 
----------------------------------------
(問題敘述 )
設 f(x) 由以下程序定義:
(a) 若 x > 0, 則 f(x) = x^3 - 311x^2 - 72x - 4
(b) 若 x <= 0, 則 f(x) = 2x^3 + 78x^2 - 2


輸入說明 
輸入共有一列
其中包含整數 X。
(|X| <= 1000)


輸出說明 
請輸出兩列。
第一列為 |f(X)| 除以 10007 所得之商數。
第二列為 |f(X)| 除以 10007 所得之餘數。

(|f(X)| 為 f(X) 之絕對值)
-----------------------------------------------------------
(題 解)
x=int(input())
# x=5
if x>0 :
    f= x**3 - 311*(x**2)  - 72*x-4
if x<= 0:
    f= 2*(x**3 ) + 78 *(x**2) - 2

print( abs(f) // 10007 )
print( abs(f) % 10007)
-----------------------------------------------------------
# 1008 [語言] 
----------------------------------------
(問題敘述 )
設 f(x) = 2x^5 + 4x^3 + 7。

輸入說明 
輸入共有兩列
第一列為正整數X。 (X <= 1000000000)
第二列為正整數Y。 (Y <= 1000000000)

輸出說明 
請輸出 f(X) 除以 Y 所得之餘數。
-----------------------------------------------------------
(題 解)
x=int(input())
y=int(input())
# x=17
# y=1234

f= 2*(x**5) + 4 * (x**3 ) +7

print(f % y)
-----------------------------------------------------------
# 1009 [語言] 
----------------------------------------
(問題敘述 )
檢查第一個字母是否為大寫?

輸入說明 
輸入共有一列,包含一個由大小寫英文字母組成的連續字串,長度介於1至10之間。

輸出說明 
如果第一個字母為大寫,請輸出一列 "YES" (不含引號),否則請輸出一列 "No" (不含引號)。
-----------------------------------------------------------
(題 解)
ipline=input()
# ipline='Wen'

if ord(ipline[0]) > 64 and ord(ipline[0]) < 91 :
    print('YES')
else:

    print('No')
-----------------------------------------------------------
(另 解)
ipline=input()
# ipline='Wen'

if(ipline[0].isupper() == True ):
    print("YES")
else:

    print("No")
-----------------------------------------------------------
# 1010 [語言] 
----------------------------------------
(問題敘述 )
找出這些數中的最小值。

輸入說明 
輸入共有兩列
第一列為一個正整數 N。(N <= 1000000)
第二列共有 N 個正整數,相鄰正整數之間以一個空白分隔,數值不超過 1000000000。

輸出說明 

請輸出第二列輸入中的 N 個正整數之最小值
-----------------------------------------------------------
(題 解)
# 1010 : 找出這些數中的最小值
n=int(input())
ipline=input()
# n=5
# ipline='6 3 4 17 9'
ipline=' '+ipline+' '

numlist=[]
strlen=len(ipline)
c=0 ;k=0 ; l=0;  r=0

for i in range(strlen):
    if ipline[i]==' ':
        l=k; r=i
        k=r
        c=c+1
        if c>1 :
            numlist.append(int(ipline[l+1:r]))
print(min(numlist))
-----------------------------------------------------------
# 1011 [語言] 
----------------------------------------
(問題敘述 )
給你一些數,
請你依照相反的順序輸出這些正整數。

輸入說明 
輸入共有兩列
第一列為一個正整數 N。(N <= 1000000)

第二列共有 N 個正整數,相鄰正整數之間以一個空白分隔,數值不超過 1000000000。
-----------------------------------------------------------
(題 解)
# 陣列反轉 (飆程式網 #1011) -1 
n=int(input())
ipline=input()
# n=5
# ipline="2 3 12 4 5"
a = ipline.split(' ')
print(' '.join(reversed(a)))
-----------------------------------------------------------
# 1012 [語言] 
----------------------------------------
(問題敘述 )
輸入的第一列有一個正整數T。(T <= 1000000)
接著共有T列測試資料,每列為一個由字元 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 所組成的連續字串,長度至少一位,且不超過 1000000 位。

這T列字串的長度總和不超過 50000000 個字元。

輸出說明
請輸出T列,對於每一列測試資料,先輸出該列字串,再輸出 10 個整數,以一個空格分隔,依序表示該列輸入中共有幾個字元 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'。
-----------------------------------------------------------
(題 解) 
(解法-1)
# 飆程式網  #1012 
n=int(input())     
for i in range(n):
    ipline=input()
    print(ipline,end=' ')
    for j in range(10):
        c=ipline.count(str(j))
        print(c,end=' ')
    print()
-----------------------------------------------------------
# 1013 [語言] 
----------------------------------------
(問題敘述 )
請輸出反轉後的字串。
-----------------------------------------------------------
(題 解)
ipline=input()
# ipline="FHHSa"
for i in range(len(ipline)-1,-1,-1):
    print(ipline[i:i+1],end='')
-----------------------------------------------------------
# 1014 [語言] 
----------------------------------------
(問題敘述 )
數一下字串中有幾個小寫和大寫英文字母嗎?

輸入說明
輸入只有一列,為一由字元 'a'~'z','A'~'Z' 所組成的連續字串,長度至少一位,且不超過 1000000 位。

輸出說明
請輸出兩個整數,表示字串中的小寫數量和大寫數量,並以空白隔開。

範例輸入
Fhhs

範例輸出
3 1
-----------------------------------------------------------
(題 解 -1 )
ipline=input()
# ipline="FHHs"
cl=0; cc=0
for str in ipline:
    # print(strs)
    if str.isupper():
        cc=cc+1
    elif str.islower():
        cl=cl+1

print(cl,cc)
-----------------------------------------------------------
(題 解 -2 )
ipline=input()
# ipline="FHHs"
cc=0 ; cl =0
for i in range(len(ipline)):
    if ipline[i:i+1] >='A'  and ipline[i:i+1] <='Z' :
        cc=cc+1
    elif ipline[i:i+1] >='a'  and ipline[i:i+1] <='z' :
        cl=cl+1
print(cl,cc)
----------------------------------------
# 1015[語言] 
----------------------------------------
(問題敘述 ) 
將小寫字母換成大寫字母,大寫字母換成小寫字母嗎?

輸入說明
輸入只有一列,為一由字元 'a'~'z','A'~'Z' 所組成的連續字串,長度至少一位,且不超過 1000000 位。

輸出說明
請輸出將大小寫字母互換之後的字串。
-----------------------------------------------------------
(題 解)
ipline=input()
# ipline='AbCdEfzZ'
str=''
for i in range(len(ipline)):
    # print(ipline[i:i+1], ord(ipline[i:i+1]))    
    if ord(ipline[i:i+1]) >=65 and ord(ipline[i:i+1]) <=90:
        str=str+chr(ord(ipline[i:i+1])+32)
    elif ord(ipline[i:i+1]) >=97 and ord(ipline[i:i+1]) <=123:
        str=str+chr(ord(ipline[i:i+1])-32)
print(str)

----------------------------------------
# 1016 [語言] 
----------------------------------------
(問題敘述 )
找出這些數裡面出現最多次的數值


輸入說明
輸入共有兩列
第一列為一個正整數 N (1 <= N <= 100000)
第二列共有 N 個正整數,相鄰正整數之間以一個空白分隔,數值介於0到9之間。


輸出說明
請輸出第二列輸入中的 N 個正整數中,出現最多次的數值。若有不只一個數值出現最多次,請由小到大輸出這些數值,並以空白隔開。
-----------------------------------------------------------
(題 解)
# 飆程式網  #1016
n=input()
ipline=input()
# n=13
# ipline="1 9 3 5 1 4 0 9 8 1 4 2 4"
c=[]
for i in range(10):
    c.append(0)
#  print(c)

for i in range(0,len(ipline),2):
    n=int(ipline[i]) ; # print(n, end='')
    c[n]=c[n]+1
            
# print(c); print(max(c))
for i in range(10):
    if c[i] == max(c) :

        print(i,end=' ')

----------------------------------------
# 1017 [語言] 
----------------------------------------
(問題敘述 )
給你兩個長度分別為 N,M 的陣列 A,B,請輸出兩陣列中元素相乘的結果,詳見輸出說明。

輸入說明
輸入共有兩列
第一列第一個整數為 N ,表示陣列 A 的長度,接著共有 N 個整數,依序表示 A 中的元素。
第二列第一個整數為 M ,表示陣列 B 的長度,接著共有 M 個整數,依序表示 B 中的元素。
保證 1 <= N,M <= 1000,且陣列中的元素都介於 0 到 999 之間。

輸出說明
請輸出 M 列,每列共 N 個整數,同一列的整數請以空白隔開。
其中,第 i 列的第 j 個整數表示 B 中第 i 個元素乘以 A 中第 j 個元素的值。

範例輸入
4 1 2 3 4
3 1 10 100

範例輸出
1 2 3 4
10 20 30 40
100 200 300 400
-----------------------------------------------------------
(題 解)
# 飆程式網  #1017
ipline01=input()
ipline02=input()
# ipline01='4 1 2 3 4'
# ipline02='3 1 10 100'

c=[]
for i in range(10):
    c.append(0)

list01=list(map(int,ipline01.split())); list02=list(map(int,ipline02.split()))
for i in range(1,list02[0]+1):

    for j in range(1,list01[0]+1):
        print(list01[j]*list02[i],end=' ')

    print()
-----------------------------------------------------------
# 1018 [語言] 
----------------------------------------
(問題敘述 )
給你 N 個字串,請依照輸入的順序由後往前輸出這些字串。

輸入說明
輸入共有 N+1 列
第一列為一個正整數 N ,表示接下來有 N 個字串。 ( 1 <= N <= 1000 )
第二列到第 N+1 列,每一列為一由字元 'a'~'z','A'~'Z' 所組成的連續字串,長度至少一位,且不超過 1000 位。

輸出說明
請依照輸入的順序,由後往前輸出這些字串。兩字串間請以換行隔開。
-----------------------------------------------------------
(題 解)
# 飆程式網  #1018
n=int(input())

ipline=[]
for i in range(n):
    ipline.append(input())

for i in range(n-1,-1,-1):

    print(ipline[i])
-----------------------------------------------------------
# 100 [語言] 
----------------------------------------
(問題敘述 )

-----------------------------------------------------------

(題 解)
-----------------------------------------------------------

***************************************

用 sys  讀測試資料請用
import sys
sInput=sys.stdin.readline().strip()

*************** 說明 *******************
Python從標準輸入stdin讀取數據
Python有幾種方法來讀取標準輸入的數據。

(1). sys.stdin.readline() 僅僅接受一行的全部輸入
在末尾加上.strip()或.strip(“\n”)去掉末尾的換行符, 如:
line=sys.stdin.readline().strip()     #末尾加.strip() ,去掉了換行符


(2). sys.stdin.read()可以接受多行的標準輸入,包括末尾的'\n'
------------------------------------------------------------
sys.stdin提供了read()和readline()函數,如果想按一行行來讀取,可以考慮使用它:

1、使用 sys.stdin

import sys
line = sys.stdin.readline()
while line:
    print line,
    line = sys.stdin.readline()
注意:如果沒有數據,io會被堵塞,所以可以對標準輸入做數據檢查(Linux):

import sys
import select

if select.select([sys.stdin], [], [], 0.0)[0]:
    help_file_fragment = sys.stdin.read()
else:
    print("No data", file=sys.stderr)
    sys.exit(2)

2、 使用  sys.stdin.readline()

如果在平時使用sys.stdin.readline( )獲取輸入的話,不要忘了去掉末尾的換行符,
可以用strip( )函數去掉(sys.stdin.readline( ).strip('\n')),這樣處理一下就行了。

3、 1003 指令 map(int,i.split()) 語法說明
# 下面一行將輸入的字串 line 以" "(空白鍵)為分隔切成兩個字串,
  再將這兩個字串作型態轉換,轉成int再分別儲存至a,b中
  a,b=map(int,line.split())

==================================
1000 [語言] 第一支程式
---------------------------------
(問題敘述 )
只要能夠成功編譯,就能獲得滿分,超好賺的
(不必做任何計算, 也不能做任何輸入、輸出!)
-----------------------------------
PY2 / PY3:
(什麼都不用) 直接上傳
==================================
1001 [語言] 輸出操作
-------------------------
(問題敘述 )
你的程式能輸出上古時代的範例「 Hello World 」嗎?
就從這題開始吧~~
----------------------------------------
(題 解)
print('Hello World')
print('Hello FHHS')
==================================
1003 [語言] 字串之輸入與輸出操作
-----------------------------------
(問題敘述 )
來試試字串的輸入以及輸出吧!
輸入共有一列,包含一個由英文字母大小寫與數字組成的字串 S,字串的長度至少為1。

測試資料 1,字串的長度不超過10。
測試資料 2,字串的長度不超過100。
測試資料 3,字串的長度不超過10000。
測試資料 4,字串的長度不超過1000000。
--------------------------------------
(題 解)
import sys

sInput=sys.stdin.readline().strip()
while(sInput!=""):
    print(sInput)
    print(sInput)
    sInput=sys.stdin.readline().strip()

==================================
1004 [語言] 簡單的數值運算
----------------------------------------
(問題敘述 )
來試試看用程式語言當計算機好了
請依照輸出格式輸出計算後所得的答案
設 f(x) = x^3 + 3x^2 + 7x + 4

(上式中的 a^b 表示 a 的 b 次方之意,
優先順序較加法與係數運算高,
也即 f(x) = (x^3) + 3(x^2) + 7(x) + 4)

真的這麼簡單嗎?相信真的很簡單XD
不過如果答案錯誤別緊張,會有厲害的老師來幫你!


輸入說明
輸入共有一列
其中包含正整數 X。
(X <= 1000000)

對於占分至少 60% 的測試資料,X < 1250。
-------------------------------------------
(題 解)
import sys
for s in sys.stdin:
    s=int(s)
    print(int(s**3+3*(s**2)+7*s+4))

==================================
1005 [語言] 複雜的數值運算
-----------------------------------------
(問題敘述 )
來試試看用程式語言當計算機好了
請依照輸出格式輸出計算後所得的答案
設 f(x,y,z) = - (x^3) + y*(x^2) - z*x + 4

(上式中的 a^b 表示之意,與題目1004相同)

輸入說明
輸入共有一列
其中包含整數 X, Y, Z,以一個空白分隔。
(|X|,|Y|,|Z| <= 1000000, |X| 表示 X 的絕對值)
-----------------------------------------
(題 解)
import sys
for i in sys.stdin:
    x,y,z=map(int,i.split())
    print((-(x**3)+(y*(x**2))-(z*x)+4))

==================================
1006 [語言] 含條件判斷之數值運算
----------------------------------------
(問題敘述 )
傳說中的「If」敘述讓程式能在所判斷的各種情況執行不同的流程

設 f(x) 由以下程序定義:
(a) 若 x > 0, 則 f(x) = x^3 + 3x^2 + 7x + 4
(b) 若 x <= 0, 則 f(x) = 2x^3 - x^2 - 2

輸入說明
輸入共有一列
其中包含整數 X。
(|X| <= 1000)
-----------------------------------------
(題 解)
import sys

sInput=sys.stdin.readline().strip()
while(sInput!=""):
    x = int(sInput)
    if(x>0):
        print(x**3+3*x**2+7*x+4)
    else:
        print(2*x**3-x**2-2)
    sInput=sys.stdin.readline().strip()

==================================

1007 [語言] 復刻版數值運算
-----------------------------------------
(問題敘述 )
設 f(x) 由以下程序定義:
(a) 若 x > 0, 則 f(x) = x^3 - 311x^2 - 72x - 4
(b) 若 x <= 0, 則 f(x) = 2x^3 + 78x^2 - 2


輸入說明
輸入共有一列
其中包含整數 X。
(|X| <= 1000)

-----------------------------------------
(題 解)
import sys

sInput=sys.stdin.readline().strip()
while(sInput!=""):
    x = int(sInput)
    if(x>0):
        print(abs(x**3-311*(x**2)-72*x-4)//10007)
        print(abs(x**3-311*(x**2)-72*x-4)%10007)
    else:
        print(abs(2*x**3+78*(x**2)-2)//10007)
        print(abs(2*x**3+78*(x**2)-2)%10007)
    sInput=sys.stdin.readline().strip()

==================================
1008 [語言] 餘數版數值運算
---------------------------------------------
(問題敘述 )
設 f(x) = 2x^5 + 4x^3 + 7。

輸入說明
輸入共有兩列
第一列為正整數X。 (X <= 1000000000)
第二列為正整數Y。 (Y <= 1000000000)
-----------------------------------------
(題 解)
import sys

sInput=sys.stdin.readline().strip()
while(sInput!=""):
    x=int(sInput)
    sInput=sys.stdin.readline().strip()
    y=int(sInput)
    print((2*x**5+4*x**3+7)%y)
    sInput=sys.stdin.readline().strip()

==================================
1009 [語言] 字串開頭之判斷
--------------------------------------
(問題敘述 )
溫教授在紙上寫了一串由大小寫英文字母組成的連續字串
你可以幫他檢查第一個字母是否為大寫嗎?


輸入說明
輸入共有一列,包含一個由大小寫英文字母組成的連續字串,長度介於1至10之間。

-----------------------------------------
(題 解)
import sys

sInput=sys.stdin.readline().strip()
while(sInput!=""):
    if(sInput[0].isupper()==True):
        print("YES")
    else:
        print("No")
    sInput=sys.stdin.readline().strip()

==================================

沒有留言:

張貼留言