โจทย์
ณ ห้องเรียนแห่งหนึ่ง ค่อนข้างบ่อยครั้งที่พบว่ามีเสียงรบกวนมากมายในระหว่างคาบเรียนและแทนที่นักเรียนจะตั้งใจฟังในสิ่งที่คุณครูสอน นักเรียนกลับเอาแต่สนทนากันในเรื่องวิกฤตการณ์ทางเศรษฐกิจ หรือการเข้าร่วมสหภาพยุโรปของ Croatia
เสียงที่ดังที่สุดจะพบได้บ่อยเมื่อเวลาที่นักเรียนกำลังเกียจคร้าน ด้วยเหตุนี้ คุณครูจึงให้งานจำนวนมากแก่เด็ก ๆ เพื่อให้เด็ก ๆ เงียบเสียงลง และในงานประเภทหนึ่งที่คุณครูให้ นักเรียนจะต้องคำนวณหาผลลัพธ์ของการดำเนินการทางคณิตศาสตร์ของตัวเลขที่มีค่ามาก 2 ค่า
การดำเนินการทางคณิตศาสตร์ที่เราสนใจในที่นี้จะมีแค่เพียงการบวกและการคูณกันเท่านั้นและตัวถูกดำเนินการ (Operand) จะต้องเป็นตัวเลขที่สามารถเขียนให้อยู่ในรูปของ 10 ยกกำลังตัวเลขใดๆ และมีค่าไม่เกิน 100 หลัก
งานของคุณ
จงเขียนโปรแกรมเพื่อคำนวณหาผลลัพธ์ของการดำเนินการทางคณิตศาสตร์
ข้อมูลนำเข้า
ในบรรทัดแรก ประกอบด้วยเลขจำนวนเต็มบวกของตัวถูกดำเนินการตัวแรก (A)
บรรทัดที่ 2 คืออักขระ ‘+’ หรือ ‘*’ ซึ่งแทนการบวกและการคูณกันนั่นเอง
บรรทัดที่ 3 คือเลขจำนวนเต็มบวกของตัวถูกดำเนินการตัวที่สอง (B)
ตัวเลข A และ B จะต้องเป็นตัวเลขที่สามารถเขียนให้อยู่ในรูปของ 10 ยกกำลังตัวเลขใดๆ และมีค่าอย่างมาก 100 หลัก
ข้อควรระวัง: ตัวเลขในข้อมูลนำเข้าอาจมีค่ามากเกินกว่าที่จะเก็บใน int หรือ long long ได้
ข้อมูลส่งออก
จงแสดงผลผลลัพธ์ของการดำเนินการทางคณิตศาสตร์
ที่มา: COCI 2008/2009, Contest #6 – March 7, 2009
ตัวอย่างข้อมูลนำเข้า ตัวอย่างข้อมูลส่งออก
1000 100000
*
100
10000 10010
+
10
10 1010
+
1000
โค้ดที่ใช้งาน
def buka(input_data):temp = input_data
input_data = input('input your operation(+ or *) :')
if(input_data == '+'):
input_process = input('+ ')
temp = temp+int(input_process)
elif(input_data == '*'):
input_process = input('* ')
temp = temp*int(input_process)
return temp
print(buka(int(input('input :'))))
----------------------------------------------------------------------------------------------------------------
โจทย์
กำหนดจำนวนเต็ม A,B เมื่อ A modulo B จะได้ผลลัพธ์เป็นเศษจากการหาร A ด้วย B ยกตัวอย่างเช่น 7 , 14 , 27 , 38 เมื่อ modulo ด้วย 3 จะได้ผลลัพธ์เป็น 1 , 2 , 0 และ 2 ตามลำดับ จงเขียนโปรแกรมรับจำนวนเต็ม 10 ค่า จากนั้นทำการ modulo จำนวนทั้งสิบด้วย 42 และแสดงผลเป็นจำนวนแบบของเศษที่เหลือจากการ modulo ด้วย 42 ที่ไม่ซ้ำกัน
ข้อมูลนำเข้า
ในข้อมูลนำเข้าจะประกอบไปด้วยจำนวนเต็มบวก 10 จำนวน แต่ละจำนวนมีค่าน้อยกว่า 1,000 บรรทัดละ 1 จำนวน
ข้อมูลส่งออก
จำนวนแบบของเศษที่ไม่ซ้ำกัน เมื่อนำทั้ง 10 จำนวนจากข้อมูลนำเข้ามา modulo ด้วย 42
ที่มา: Croatian Open Competition in Informatics
Contest 1 – October 28, 2006
ตัวอย่างข้อมูลนำเข้า ตัวอย่างข้อมูลส่งออก
1 2 3 4 5 6 7 8 9 10 | 10 | ||||||||||||||||||||||||||||||||||||
42 84 252 420 840 126 42 84 420 126 | 1 | ||||||||||||||||||||||||||||||||||||
39 40 41 42 43 44 82 83 84 85 โค้ดที่ใช้งาน
def modulo():
temp = []
count = 1
for i in range(0,10):
input_data = int(input('input data :'))
temp.append(input_data % 42)
for j in range(0,9):
temp.sort()
if(temp[j] != temp[j+1]):
count = count+1
return count
print(modulo())
| 6 |
โจทย์
อ้วน กฤติศักดิ์ ไชยกุล (นามสมมติ) ต้อง การจะลดน้ำหนักของเขา เนื่องจากเขามีน้ำหนักเยอะเกินขนาดและมีพุงที่ใหญ่ยื่นยาวจนกระทั่งปิด เข็มขัด เขาได้คิดวิธีการลดน้ำหนักแบบใหม่คือการเล่นมุกแป๊กๆ เพื่อจะได้ใช้พลังงานจากการพูดสิ่งไร้สาระออกมาด้วยเหตุนี้จึงทำให้ในแต่ละวัน อ้วน เล่นมุกแป๊กออกมาจำนวนหลายมุกมาก (บ้างก็เป็นมุกซ้ำที่เคยเล่นแล้ว) เขาจึงต้องการจดบันทึกมุกของเขาให้เป็นระเบียบด้วยการเรียงมุกทั้งหมดตามลำดับตัวอักษร Dictionary โดยจะไม่จดบันทึกมุกซ้ำหลายครั้ง
ข้อมูลนำเข้า
บรรทัดแรก : จำนวนนับ N ( 1 < N < 1000 ) แทนจำนวนของมุกที่ อ้วน เล่นในวันนี้
บรรทัดถัดมา N บรรทัดแต่ละบรรทัดประกอบด้วยสตริง 1 สตริงยาวไม่เกิน 30 ตัวอักษร ประกอบด้วยตัวอักษรพิมพ์เล็กเท่านั้น
ข้อมูลส่งออก
มี หลาย บรรทัด แต่ละบรรทัดแสดงสตริงมุกที่ อ้วน เล่น เรียงตามลำดับตัวอักษร โดยจะไม่แสดงมุกเดิมซ้ำ
ข้อมูลนำเข้า
บรรทัดแรก : จำนวนนับ N ( 1 < N < 1000 ) แทนจำนวนของมุกที่ อ้วน เล่นในวันนี้
บรรทัดถัดมา N บรรทัดแต่ละบรรทัดประกอบด้วยสตริง 1 สตริงยาวไม่เกิน 30 ตัวอักษร ประกอบด้วยตัวอักษรพิมพ์เล็กเท่านั้น
ข้อมูลส่งออก
มี หลาย บรรทัด แต่ละบรรทัดแสดงสตริงมุกที่ อ้วน เล่น เรียงตามลำดับตัวอักษร โดยจะไม่แสดงมุกเดิมซ้ำ
ตัวอย่างข้อมูลนำเข้า ตัวอย่างข้อมูลส่งออก
4 toppykung krittisakchaiyakul noob nakornpathom | krittisakchaiyakul nakornpathom noob toppykung |
6 mai hen longsob ma pid sala | hen longsob ma mai pid sala |
6 maidai leoi maidai tong maidai nakornpathom | leoi maidai nakornpathom tong |
โค้ดที่ใช้งาน
def input_joke():
quatify_joke = int(input('input number :'))
list_joke = []
for i in range(quatify_joke):
input_joke = input('what joke do you want :')
list_joke.append(input_joke)
list_joke.sort()
return list_joke
def mem_joke():
joke_played = input_joke()
lists_duplicate = []
i = 0
while(i<len(joke_played)-1):
if(joke_played[i] == joke_played[i+1]):
joke_played.remove(joke_played[i])
i = i-1
i = i+1
return joke_played
print(mem_joke())
-----------------------------------------------------------------------------------------------------------------
โจทย์
ร้านสั่งทำเค้กแห่งหนึ่งแถวมหาวิทยาลัยขอนแก่น รับใบสั่งเค้กเฉพาะช่วงที่มีการแข่งขันคอมพิวเตอร์โอลิมปิกของ สอวน เท่านั้น เจ้าของร้านเค้กนี้จะผลิตเค้กขนาดหนึ่ง ปอนด์ แต่แบ่งขายเป็นห้าแบบคือ เต็มปอนด์ เศษสามส่วนสี่ปอนด์ ครึ่งปอนด์ หนึ่งส่วนสี่ปอนด์ และ หนึ่งส่วนแปดปอนด์ เผอิญว่าเจ้าของร้านเค้กเป็นนักคณิตศาสตร์ที่รักความสวยงามและความอร่อย ดังนั้นเวลาขายเค้กแต่ละครั้งเจ้าของร้านจะไม่ยอมเอาเค้กแบบที่เล็กกว่ามารวมให้ได้ขนาดของเค้กตามที่ลูกค้าต้องการ
สมมุติว่า ถ้าลูกค้าสั่งเค้กขนาดเศษสามส่วนสี่ปอนด์ เจ้าของร้านก็จะไม่นำเค้กขนาดหนึ่งส่วนสี่ปอนด์ให้ลูกค้าไปสามก้อนแต่จะให้เค้กขนาดสามส่วนสี่ปอนด์ที่มีอยู่แก่ลูกค้าเท่านั้น และถ้าไม่มีเค้กขนาดสามส่วนสี่ปอนด์อยู่เลย เจ้าของร้านจะเอาเค้กขนาดเต็มก้อนมาแบ่งแล้วให้ลูกค้าไป โดยเก็บเศษที่เหลือไว้เผื่อให้กับลูกค้าคนอื่นที่อาจต้องการแบบหนึ่งส่วนสี่ปอนด์ หรือไว้เพื่อแบ่งให้ลูกค้าที่ต้องการขนาดหนึ่งส่วนแปดปอนด์
ด้วยความคุ้นเคยของลูกค้า ลูกค้าจะสั่งเค้กเป็นจำนวนเต็ม a b c d e สำหรับก้อนของขนาดเค้กเต็มปอนด์ เศษสามส่วนสี่ปอนด์ ครึ่งปอนด์ หนึ่งส่วนสี่ปอนด์ และ หนึ่งส่วนแปดปอนด์ ตามลำดับ (0≤a,b,c,d,e ≤ 10000) ในวันหนึ่งจะมีรายการสั่งของทั้งหมดจากลูกค้า n ราย เจ้าของร้านจะรับรายการสั่งของวันนี้เพื่อคำนวณว่าจะต้องทำเค้กทั้งหมดกี่ปอนด์เพื่อให้เพียงพอในการส่งของให้ลูกค้าในวันถัดไป
คำสั่ง
จงเขียนโปรแกรมเพื่อรับข้อมูลรายการสั่งเค้กของลูกค้าและคำนวณว่าจะต้องทำเค้กอย่างน้อยที่สุดกี่ปอนด์
ข้อมูลนำเข้า
บรรทัดแรก มีจำนวนเต็ม n (1≤ n ≤10)
ต่อจากนั้น n บรรทัด จะเป็นข้อมูลของลูกค้าคนที่ 1 ถึงคนที่ n โดยแต่ละบรรทัดจะประกอบด้วย จำนวนเต็ม a b c d e (0≤a,b,c,d,e≤10000) โดยแต่ละค่าจะคั่นด้วยช่องว่างหนึ่งช่อง
ข้อมูลส่งออก
มีบรรทัดเดียว ประกอบด้วยจำนวนเต็มหนึ่งค่า ซึ่งเป็นจำนวนของเค้กเต็มปอนด์ที่น้อยที่สุดที่เจ้าของร้านต้องเตรียมให้เพียงพอตามรายการที่ลูกค้าสั่ง
สมมุติว่า ถ้าลูกค้าสั่งเค้กขนาดเศษสามส่วนสี่ปอนด์ เจ้าของร้านก็จะไม่นำเค้กขนาดหนึ่งส่วนสี่ปอนด์ให้ลูกค้าไปสามก้อนแต่จะให้เค้กขนาดสามส่วนสี่ปอนด์ที่มีอยู่แก่ลูกค้าเท่านั้น และถ้าไม่มีเค้กขนาดสามส่วนสี่ปอนด์อยู่เลย เจ้าของร้านจะเอาเค้กขนาดเต็มก้อนมาแบ่งแล้วให้ลูกค้าไป โดยเก็บเศษที่เหลือไว้เผื่อให้กับลูกค้าคนอื่นที่อาจต้องการแบบหนึ่งส่วนสี่ปอนด์ หรือไว้เพื่อแบ่งให้ลูกค้าที่ต้องการขนาดหนึ่งส่วนแปดปอนด์
ด้วยความคุ้นเคยของลูกค้า ลูกค้าจะสั่งเค้กเป็นจำนวนเต็ม a b c d e สำหรับก้อนของขนาดเค้กเต็มปอนด์ เศษสามส่วนสี่ปอนด์ ครึ่งปอนด์ หนึ่งส่วนสี่ปอนด์ และ หนึ่งส่วนแปดปอนด์ ตามลำดับ (0≤a,b,c,d,e ≤ 10000) ในวันหนึ่งจะมีรายการสั่งของทั้งหมดจากลูกค้า n ราย เจ้าของร้านจะรับรายการสั่งของวันนี้เพื่อคำนวณว่าจะต้องทำเค้กทั้งหมดกี่ปอนด์เพื่อให้เพียงพอในการส่งของให้ลูกค้าในวันถัดไป
คำสั่ง
จงเขียนโปรแกรมเพื่อรับข้อมูลรายการสั่งเค้กของลูกค้าและคำนวณว่าจะต้องทำเค้กอย่างน้อยที่สุดกี่ปอนด์
ข้อมูลนำเข้า
บรรทัดแรก มีจำนวนเต็ม n (1≤ n ≤10)
ต่อจากนั้น n บรรทัด จะเป็นข้อมูลของลูกค้าคนที่ 1 ถึงคนที่ n โดยแต่ละบรรทัดจะประกอบด้วย จำนวนเต็ม a b c d e (0≤a,b,c,d,e≤10000) โดยแต่ละค่าจะคั่นด้วยช่องว่างหนึ่งช่อง
ข้อมูลส่งออก
มีบรรทัดเดียว ประกอบด้วยจำนวนเต็มหนึ่งค่า ซึ่งเป็นจำนวนของเค้กเต็มปอนด์ที่น้อยที่สุดที่เจ้าของร้านต้องเตรียมให้เพียงพอตามรายการที่ลูกค้าสั่ง
ที่มา: การแข่งขันคอมพิวเตอร์โอลิมปิก สอวน. ครั้งที่ 3 มหาวิทยาลัยขอนแก่น
ตัวอย่างข้อมูลนำเข้า ตัวอย่างข้อมูลส่งออก
3 4
1 0 1 0 0
0 1 0 1 0
0 1 0 0 0
5 2
0 0 1 0 0
0 0 0 0 1
0 0 1 0 0
0 1 0 0 0
โค้ดที่ใช้งาน
def input2int(data):
lists = []
for i in range(len(data)):
lists.append(int(data[i]))
return lists
def plus_order():
quantify = int(input('input your value to order :'))
check = 0
sum_array = [0,0,0,0,0]
while(check<quantify):
input_data = input2int(input('input your quantify of size(5 value with spacebar) :').split())
if(quantify == 1):
return input_data
else:
for i in range(len(input_data)):
sum_array[i] = sum_array[i]+input_data[i]
check = check + 1
return sum_array
def cal_cake():
order_list = plus_order()
size_cake = [1,0.75,0.5,0.25,0.125]
sum_cake = order_list[0]+order_list[1]
sum_quarter = sum_cake-order_list[0]-(order_list[1]*size_cake[1])
print('default_sum :',sum_cake)
if((((order_list[3])%4 == 0) or ((order_list[4])%8 == 0))):
if((order_list[3])%4 == 0):
sum_cake = sum_cake+(order_list[3]*size_cake[3])
order_list[3] = 0
if((order_list[4])%8 == 0):
sum_cake = sum_cake+(order_list[4]*size_cake[4])
order_list[4] = 0
print('check1/4and1/8_sum :',sum_cake)
print('quarter1 :',sum_quarter)
sum_cake = sum_cake+(order_list[2]*size_cake[2])
print('sum+0.5 :',sum_cake)
if(sum_quarter != 0):
sum_quarter = sum_quarter-(order_list[3]*size_cake[3])-(order_list[4]*size_cake[4])
print('quarter2_full :',sum_quarter)
if(sum_quarter < 0):
sum_cake = sum_cake-sum_quarter
print('semi-finalout',sum_cake)
if(sum_cake% 1 == 0):
return int(sum_cake)
else:
return int(sum_cake)+1
print(cal_cake())
-------------------------------------------------------------------------------------------------------------------------------------------
โจทย์
ให้นักเรียนตรวจสอบว่า สายอักขระที่โจทย์กำหนดให้นี้ เป็นตัวอักษรพิมพ์เล็กทั้งหมด หรือตัวอักษรพิมพ์ใหญ่ทั้งหมด หรือมีทั้งตัวอักษรพิมพ์ใหญ่และพิมพ์เล็กผสมกันอยู่
ข้อมูลนำเข้า
บรรทัดแรกเพียงบรรทัดเดียว สายอักขระ ที่ประกอบไปด้วยตัวอักษร 'a' - 'z' หรือ 'A' - 'Z' เท่านั้น ความยาวไม่เกิน 10,000 ตัวอักษร
ข้อมูลส่งออก
ให้พิมพ์คำตอบตามเงื่อนไขต่อไป
นี้
โจทย์
ให้นักเรียนตรวจสอบว่า สายอักขระที่โจทย์กำหนดให้นี้ เป็นตัวอักษรพิมพ์เล็กทั้งหมด หรือตัวอักษรพิมพ์ใหญ่ทั้งหมด หรือมีทั้งตัวอักษรพิมพ์ใหญ่และพิมพ์เล็กผสมกันอยู่
ข้อมูลนำเข้า
บรรทัดแรกเพียงบรรทัดเดียว สายอักขระ ที่ประกอบไปด้วยตัวอักษร 'a' - 'z' หรือ 'A' - 'Z' เท่านั้น ความยาวไม่เกิน 10,000 ตัวอักษร
ข้อมูลส่งออก
ให้พิมพ์คำตอบตามเงื่อนไขต่อไป
นี้
- ถ้าสายอักขระประกอบด้วยตัวพิมพ์ใหญ่ทั้งหมด ให้พิมพ์ว่า "All Capital Letter" โดยไม่ต้องมีเครื่องหมาย ""
- ถ้าสายอักขระประกอบด้วยตัวพิมพ์เล็กทั้งหมด ให้พิมพ์ว่า "All Small Letter" โดยไม่ต้องมีเครื่องหมาย ""
- ถ้าสายอักขระประกอบด้วยตัวอักษรพิมพ์เล็กและพิมพ์ใหญ่ผสมกันไป ให้พิมพ์ว่า "Mix" โดยไม่ต้องมีเครื่องหมาย ""
ABCDEFG | All Capital Letter |
abcdefg | All Small Letter |
AbCdEfG | Mix |
โค้ดที่ใช้งาน
def check_char(Str):#สร้างฟังก์ชั่นมาเพื่อใช้งาน
if(Str.isupper()):#ถ้าตัวที่รับมาเป็นตัวใหญ่ทั้งหมด
print('All Capital Letter')#แสดงข้อความ
if(Str.islower()):#ถ้าตัวที่รับมาเป็นตัวเล็กทั้งหมด
print('All Small Letter')#แสดงข้อความ
else:
print('Mix')
check_char('input('input your data :')#เรียกใช้งานฟังก์ชั่น
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
ไม่มีความคิดเห็น:
แสดงความคิดเห็น