1.คมกฤษณ์เปิดตู้เย็น พบวุ้นกะทิค้างคืนส่งกลิ่นคละคลุ้งไปทั่ว ขณะที่เขากำลังจะหยิบวุ้นก้อนนั้นไปทิ้ง เขาก็ระลึกได้ว่าวุ้นก้อนนั้นเหมาะที่จะใช้ทดสอบความคมของมีดที่เพิ่งซื้อมาจากรายการแนะนำสินค้าทางโทรทัศน์ยามค่ำคืน
คมกฤษณ์ต้องการตัดวุ้นซึ่งเป็นทรงสี่เหลี่ยมมุมฉากขนาด A×B×C นิ้ว โดยแต่ละครั้งที่เขาตัดวุ้น เขาจะเลือกตัดโดยพยายามแบ่งด้านที่ยาวที่สุดของวุ้นออกเป็นสองส่วนเท่าๆ กัน แต่เนื่องจากเขาต้องการให้ขนาดของวุ้นเป็นจำนวนเต็มนิ้วเสมอ หากด้านที่ยาวที่สุดนั้นมีความยาวเป็นจำนวนคี่นิ้ว เขาจะฝานวุ้นทิ้ง 1 นิ้วก่อนจะแบ่งด้านนั้นออกเป็น 2 ส่วนเท่าๆ กัน เมื่อตัดแบ่งแล้ว คมกฤษณ์จะโยนวุ้นส่วนใดส่วนหนึ่งทิ้งไป ก่อนจะพยายามตัดวุ้นส่วนที่เหลืออีกครั้งด้วยวิธีการเดิม
สังเกตว่าคมกฤษณ์จะตัดวุ้นไปได้เรื่อยๆ จนกว่าจะเหลือวุ้นขนาด 1×1×1 นิ้ว (หากคมกฤษณ์ยังรั้นตัดวุ้นต่อไปอีก วุ้นจะเละ ส่งกลิ่นคละคลุ้งรุนแรงกว่าเดิม)
งานของคุณรับข้อมูลขนาดของวุ้น แล้วคำนวณว่าคมกฤษณ์จะตัดวุ้นตามขั้นตอนได้กี่ครั้ง (ไม่นับการฝานวุ้น)
ข้อมูลนำเข้าบรรทัดเดียว ระบุจำนวนเต็ม A, B และ C (1 ≤ A,B,C ≤ 1,000,000) คั่นด้วยช่องว่างหนึ่งช่อง
ข้อมูลส่งออกบรรทัดเดียว ระบุว่าคมกฤษณ์จะตัดวุ้นตามขั้นตอนได้กี่ครั้ง
อธิบายตัวอย่างข้อมูลที่ 1ครั้งที่ 1: วุ้นขนาด 2×5×4 นิ้ว จะถูกตัดเป็นวุ้นขนาด 2×2×4 นิ้ว เพราะด้านที่ยาวที่สุดคือด้านที่ยาว 5 นิ้ว เนื่องจากเป็นจำนวนคี่จึงถูกฝานออก 1 นิ้ว เหลือ 4 นิ้ว ก่อนจะถูกตัดแบ่งเป็นส่วนละ 2 นิ้วครั้งที่ 2: วุ้นขนาด 2×2×4 นิ้ว จะถูกตัดเป็นวุ้นขนาด 2×2×2 นิ้ว เพราะด้านที่ยาวที่สุดคือด้านที่ยาว 4 นิ้ว เนื่องจากเป็นจำนวนคู่จึงตัดแบ่งเป็นส่วนละ 2 นิ้ว
ครั้งที่ 3: วุ้นขนาด 2×2×2 นิ้ว จะถูกตัดเป็นวุ้นขนาด 1×2×2 นิ้ว
ครั้งที่ 4: วุ้นขนาด 1×2×2 นิ้ว จะถูกตัดเป็นวุ้นขนาด 1×1×2 นิ้ว
ครั้งที่ 5: วุ้นขนาด 1×1×2 นิ้ว จะถูกตัดเป็นวุ้นขนาด 1×1×1 นิ้ว
ที่มาการแข่งขัน IOI Thailand League เดือนตุลาคม 2553โจทย์โดย: ธนะ วัฒนวารุณ
คมกฤษณ์ต้องการตัดวุ้นซึ่งเป็นทรงสี่เหลี่ยมมุมฉากขนาด A×B×C นิ้ว โดยแต่ละครั้งที่เขาตัดวุ้น เขาจะเลือกตัดโดยพยายามแบ่งด้านที่ยาวที่สุดของวุ้นออกเป็นสองส่วนเท่าๆ กัน แต่เนื่องจากเขาต้องการให้ขนาดของวุ้นเป็นจำนวนเต็มนิ้วเสมอ หากด้านที่ยาวที่สุดนั้นมีความยาวเป็นจำนวนคี่นิ้ว เขาจะฝานวุ้นทิ้ง 1 นิ้วก่อนจะแบ่งด้านนั้นออกเป็น 2 ส่วนเท่าๆ กัน เมื่อตัดแบ่งแล้ว คมกฤษณ์จะโยนวุ้นส่วนใดส่วนหนึ่งทิ้งไป ก่อนจะพยายามตัดวุ้นส่วนที่เหลืออีกครั้งด้วยวิธีการเดิม
สังเกตว่าคมกฤษณ์จะตัดวุ้นไปได้เรื่อยๆ จนกว่าจะเหลือวุ้นขนาด 1×1×1 นิ้ว (หากคมกฤษณ์ยังรั้นตัดวุ้นต่อไปอีก วุ้นจะเละ ส่งกลิ่นคละคลุ้งรุนแรงกว่าเดิม)
งานของคุณรับข้อมูลขนาดของวุ้น แล้วคำนวณว่าคมกฤษณ์จะตัดวุ้นตามขั้นตอนได้กี่ครั้ง (ไม่นับการฝานวุ้น)
ข้อมูลนำเข้าบรรทัดเดียว ระบุจำนวนเต็ม A, B และ C (1 ≤ A,B,C ≤ 1,000,000) คั่นด้วยช่องว่างหนึ่งช่อง
ข้อมูลส่งออกบรรทัดเดียว ระบุว่าคมกฤษณ์จะตัดวุ้นตามขั้นตอนได้กี่ครั้ง
อธิบายตัวอย่างข้อมูลที่ 1ครั้งที่ 1: วุ้นขนาด 2×5×4 นิ้ว จะถูกตัดเป็นวุ้นขนาด 2×2×4 นิ้ว เพราะด้านที่ยาวที่สุดคือด้านที่ยาว 5 นิ้ว เนื่องจากเป็นจำนวนคี่จึงถูกฝานออก 1 นิ้ว เหลือ 4 นิ้ว ก่อนจะถูกตัดแบ่งเป็นส่วนละ 2 นิ้วครั้งที่ 2: วุ้นขนาด 2×2×4 นิ้ว จะถูกตัดเป็นวุ้นขนาด 2×2×2 นิ้ว เพราะด้านที่ยาวที่สุดคือด้านที่ยาว 4 นิ้ว เนื่องจากเป็นจำนวนคู่จึงตัดแบ่งเป็นส่วนละ 2 นิ้ว
ครั้งที่ 3: วุ้นขนาด 2×2×2 นิ้ว จะถูกตัดเป็นวุ้นขนาด 1×2×2 นิ้ว
ครั้งที่ 4: วุ้นขนาด 1×2×2 นิ้ว จะถูกตัดเป็นวุ้นขนาด 1×1×2 นิ้ว
ครั้งที่ 5: วุ้นขนาด 1×1×2 นิ้ว จะถูกตัดเป็นวุ้นขนาด 1×1×1 นิ้ว
ที่มาการแข่งขัน IOI Thailand League เดือนตุลาคม 2553โจทย์โดย: ธนะ วัฒนวารุณ
ตัวอย่างข้อมูลนำเข้า ตัวอย่างข้อมูลส่งออก
2 5 4 5
17 13 11 10
CODEที่ใช้แก้ปัญหา
def cal_value(value):lists = []
value = value+' '
temp = ' '
for i in range(len(value)):
if value[i] != ' ':
temp = temp+value[i]
else:
lists.append(int(temp))
temp = ' '
return lists
def jelly(size_jelly_in):
size_jelly = cal_value(size_jelly_in)
count = 0
if(len(size_jelly)>3):
return 'Input data is incorrect'
else:
for j in range(len(size_jelly)):
while(size_jelly[j] != 1):
if(size_jelly[j]%2 != 0):
size_jelly[j] = size_jelly[j]-1
print('**CUT OUT**',size_jelly)
while(size_jelly[j] != 1 and size_jelly[j]%2 == 0):
size_jelly[j] = size_jelly[j]/2
count = count+1
print('Divine' ,size_jelly)
if(size_jelly[j]%2 == 0):
while(size_jelly[j] != 1 and size_jelly[j]%2 == 0):
size_jelly[j] = size_jelly[j]/2
count = count+1
print('Divine' ,size_jelly)
return 'count :',count
data_in = input('input your size of jelly :')
print(jelly(data_in))
--------------------------------------------------------------------------------------------------------------------------------------------------
2.พาลินโดรม (palindrome) คือ คำที่ใช้มีลำดับของอักขระเรียงกันจากซ้ายไปขวาและขวาไปซ้ายมายังตำแหน่งกึ่งกลางของคำนั้น อยู่ในลักษณะสมมาตรกัน ตัวอย่างของพาลินโดรมได้แก่ ABA, ABBA, ABAABA, ABABABA
พาลินโดรมชั้นสอง (double palindrome) คือ พาลินโดรมซึ่งทั้งครึ่งแรกและครึ่งหลังของคำนั้นก็เป็นพาลินโดรมด้วย ดังนั้น ABA, ABAABA, ABABABA นอกจากจะเป็น พาลินโดรมแล้วก็ยังเป็น พาลินโดรมชั้นสองด้วย แต่คำว่า ABBA ไม่เป็นพาลินโดรมชั้นสองเนื่องจากว่าเมื่อแบ่งครึ่งแล้ว AB และ BA ไม่เป็นพาลินโดรมนั่นเอง
จงเขียนโปรแกรม เพื่ออ่านข้อมูลนำเข้าจากแป้นพิมพ์ (Standard input) และแสดงผลลัพธ์ออกทางจอภาพ (Standard Output) โดยข้อมูลนำเข้าเป็นคำหนึ่งคำให้บอกว่าคำนั้นเป็น พาลินโดรม พาลินโดรมชั้นสอง หรือ ไม่เป็นพาลินโดรม โดย ถ้าเป็นพาลินโดรม (แต่ไม่เป็นพาลินโดรมชั้นสอง) ให้แสดงคำว่า Palindrome และ ถ้าเป็นพาลินโดรมชั้นสองให้แสดงคำว่า Double Palindrome และถ้าไม่เป็นทั้งสองแบบให้แสดงคำว่า No
กำหนดให้คำภาษาอังกฤษดังกล่าว ประกอบด้วยอักขระตัวใหญ่ (Capital letters) จาก A ถึง Z หรือ อักขระตัวเล็ก (Small letters) จาก a ถึง z หรือตัวเลข 0-9 เท่านั้น และไม่มีช่องว่างภายในคำ ทั้งนี้ตัวอักขระที่เป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก (เช่น A กับ a หรือ B กับ b) ถือเป็นตัวเดียวกัน
ข้อมูลนำเข้า
บรรทัดแรก เป็นคำที่มีความยาว n โดยที่ 2 <= n <= 200
ข้อมูลส่งออก
บรรทัดแรก เป็นคำตอบว่าเป็นพาลินโดรมประเภทใดหรือไม่ใช่เลย โดย
- ถ้าข้อมูลนำเข้าเป็นพาลินโดรมให้แสดงคำว่า Palindrome
- ถ้าข้อมูลนำเข้าเป็นพาลินโดรมชั้นสองให้แสดงคำว่า Double Palindrome
- ถ้าข้อมูลนำเข้าเป็นไม่ใช่พาลินโดรมทั้งสองประเภทให้แสดงคำว่า No
ที่มา: การแข่งขันคณิตศาสตร์ วิทยาศาสตร์ โอลิมปิกแห่งประเทศไทย สาขาวิชาคอมพิวเตอร์ ประจำปี 2547
ตัวอย่างข้อมูลนำเข้า ตัวอย่างข้อมูลส่งออก
A72Bb72a Palindrome
aB3Ba5ab3BA Double Palindrome
ab4 No
CODEที่ใช้แก้ปัญหา
def is_palindrome(sentence):
if(sentence.lower() == sentence[::-1].lower()):
if(len(sentence)%2 !=0):
index = (len(sentence)/2+0.5)
spare_sentence = sentence[int(index):len(sentence)]
if(sentence[0:int(index-1)].lower() == spare_sentence.lower()):
return sentence+' is '+'Double palindrome'
else:
return sentence+' is '+'Palindrome'
if(len(sentence)%2 ==0):
index = (len(sentence)/2)
spare_sentence = sentence[int(index):len(sentence)]
if(sentence[0:int(index)].lower() == spare_sentence.lower()):
return sentence+' is '+'Double palindrome'
else:
return sentence+' is '+'Palindrome'
else:
return sentence+' is not '+'Palindrome'
print(is_palindrome(input('input your sentence :')))
--------------------------------------------------------------------------------------------------------------------------------------------------
3.รูปสามเหลี่ยมมุมฉาก (right, rectangled) มีมุมภายในมุมหนึ่งมีขนาด 90° (มุมฉาก) ด้านที่อยู่ตรงข้ามกับมุมฉากเรียกว่า ด้านตรงข้ามมุมฉาก ซึ่งเป็นด้านที่ยาวที่สุดในรูปสามเหลี่ยม อีกสองด้านเรียกว่า ด้านประกอบมุมฉาก
มีทฤษฎีที่เกียวข้องกับสามเหลี่ยมมุมฉาก ทฤษฎีนั้นคือ ทฤษฎีบทพีทาโกรัส กล่าวไว้ว่า "ผลรวมของพื้นที่ของรูปสี่เหลี่ยมจัตุรัสบนด้านประชิดมุมฉากทั้งสอง จะเท่ากับ พื้นที่ของรูปสี่เหลี่ยมจัตุรัสบนด้านตรงข้ามมุมฉาก"
มีทฤษฎีที่เกียวข้องกับสามเหลี่ยมมุมฉาก ทฤษฎีนั้นคือ ทฤษฎีบทพีทาโกรัส กล่าวไว้ว่า "ผลรวมของพื้นที่ของรูปสี่เหลี่ยมจัตุรัสบนด้านประชิดมุมฉากทั้งสอง จะเท่ากับ พื้นที่ของรูปสี่เหลี่ยมจัตุรัสบนด้านตรงข้ามมุมฉาก"

โจทย์
จงคำนวณความยาวของด้านตรงข้ามมุมฉาก เมื่อระบุความยาวของด้านประกอบมุมฉากทั้งสองด้านมาให้
ข้อมูลนำเข้า
บรรทัดแรก ประกอบไปด้วยจำนวนจริงบวก 2 จำนวน คั่นด้วยช่องว่าง 1 ช่อง แต่ละจำนวนจะบ่งบอกถึงความยาวของด้านประกอบมุมฉากของรูปสามเหลี่ยมรูปหนึ่ง
ข้อมูลส่งออก
บรรทัดแรกเพียงบรรทัดเดียว แสดงความยาวของด้านตรงข้ามมุมฉากของรูปสามเหลี่ยมมุมฉากที่มีด้านประกอบมุมฉากที่มีความยาวเท่ากับที่ระบุไว้ในข้อมูลนำเข้า ตอบเป็นทศนิยม 6 ตำแหน่ง
ที่มา: Programming.in.th (Northern_series)
ตัวอย่างข้อมูลนำเข้า ตัวอย่างข้อมูลส่งออก
3.000 4.000 5.000
CODEที่ใช้แก้ปัญหา
def cal_value(value):#ฟังก์ชั่นไว้แยกตัวเลขกับช่องว่าง
lists = []
value = value+' '
temp = ' '
for i in range(len(value)):
if value[i] != ' ':
temp = temp+value[i]
else:
lists.append(int(temp))
temp = ' '
return lists
def pythagorus(width_in):
width = cal_value(width_in)
if(len(width)>2):
return 'Your data is incorrect'
else:
return ((width[0]**2)+(width[1]**2))**(0.5)
data_in = input('input your data :')
print(pythagorus(data_in))
ไม่มีความคิดเห็น:
แสดงความคิดเห็น