วันจันทร์ที่ 24 สิงหาคม พ.ศ. 2558

ฝึกการเเก้โจทย์ด้วย Python โจทย์ "หางไก่ Cocktail"

โจทย์  "หางไก่ cocktail"

    คุณเพิ่งได้รับงานใหม่ที่ฟาร์มเลี้ยงไก่แห่งหนึ่ง ซึ่งที่ฟาร์มนี้มีไก่พันธุ์พิเศษอยู่หลายตัว ไก่เหล่านี้มีความแปลกอยู่หลายอย่าง อย่างแรกคือ ไก่เหล่านี้จะร่วมกันฟักไข่เป็นคู่ ๆ อย่างที่สองคือแต่ละตัวจะมีจำนวนหางได้หลายหาง ตั้งแต่หนึ่งหาง สองหาง หนึ่งแสนหาง หรือแม้แต่ไม่มีหาง
    นักวิทยาศาสตร์บอกว่า ถ้าคุณอยากได้ลูกไก่ที่สุขภาพดี แข็งแรง ไก่สองตัวที่ร่วมกันฟักไข่จะต้องมีจำนวนหางรวมกันเท่ากับ A พอดี ถามว่า คุณจะจับคู่ไก่สองตัวให้จำนวนหางเท่ากับ A ได้กี่วิธี

งานของคุณ
      รับค่าจำนวนหางของไก่แต่ละตัวในฟาร์ม และหาว่า จะจับคู่ไก่สองตัวให้จำนวนหางรวม A หางได้กี่วิธี

ข้อมูลนำเข้า
    บรรทัดแรกมีจำนวนเต็มหนึ่งจำนวน N แทนจำนวนไก่ที่คุณมี (1≤N≤1,000,000) อีก N บรรทัดถัดมา มีจำนวนเต็มบรรทัดละหนึ่งตัว บอกจำนวนหางของไก่แต่ละตัว โดยไก่แต่ละตัวจะมีหางไม่เกิน 100,000 หาง
    บรรทัดที่ N+2 จำนวนเต็มหนึ่งตัว แทนค่า A ที่นักวิทยาศาสตร์บอกคุณ

ข้อมูลส่งออก
    มีหนึ่งบรรทัด มีจำนวนเต็มหนึ่งตัว คือ จำนวนวิธีที่สามารถจับคู่ไก่ให้จำนวนหางรวมเท่ากับ A การให้คะแนน
    ชุดข้อมูลทดสอบมูลค่าไม่เกิน 40 คะแนน มีค่า N≤100 และในทุกชุดข้อมูลทดสอบมีค่า N≤1,000,000 

โจทย์โดย: ทักษพร กิตติอัครเสถียร
ที่มา: TOI.C:05-2009

ตัวอย่างข้อมูลนำเข้า                  ตัวอย่างข้อมูลส่งออก
5
1
3
4
3
0
4
                  3
               
               



ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
ที่มาของโจทย์  www.programming.in.th

วิเคราะโจทย์

  • รับข้อมูล 3 ตัวด้วยกันคือ จำนวนของไก่ หางของไก่เเต่ล่ะตัว เเละจำนวนหางที่รวมกันเเล้วได้ผลผลิตดีที่สุด

เเนวคิดในการเเก้โจทย์

  1. รับข้อมูลจำนวนของไก่เข้ามาเเล้วส่งต่อให้กับ Function ที่ 1
  2. ให้ Function ที่ 1 ทำการวน Loop เผื่อรับจำนวนหางของไก่เเล้วเก็บไว้ใน List เเล้ว return 
  3. สร้าง Function ที่ 2 รับค่า List เเละ ค่า A เผื่อทำการวน Loop หาผลรวมของหางทั้งหมดที่เป็นไปได้ตามโจทย์ 

Code Python 

                                                                                                                                                                                                                                       def Getdatachicken(Input) :
              Listchicken = []
              Sumnumber = 1
              while Sumnumber <= Input :
                  Listchicken.append(input("Chicken "+str(Sumnumber)+" Is : "))
                  Sumnumber = Sumnumber + 1
              return Listchicken

          def Cocktail(InputA,InputB) :
              SumCocktail = 0
              for i in range(len(InputA)) :
                  for a in range(i+1,len(InputA)) :
                      if (InputA[i]+InputA[a]) == InputB and i != a :
                          SumCocktail = SumCocktail + 1
              return SumCocktail

          Chickennumber = input("Number of Chicken : ")
          Listchicken = Getdatachicken(Chickennumber)
          InputA = input("Input A Is : ")
          print("\nChicken Cocktail Is : "+str(Cocktail(Listchicken,InputA))+"\n")
                                                                                                                                                      

ผลลัพธ์ที่ได้

                                                                                                                                                                                                                          Number of Chicken : 5
          Chicken 1 Is : 1
          Chicken 2 Is : 3
          Chicken 3 Is : 4
          Chicken 4 Is : 3
          Chicken 5 Is : 0
          Input A Is : 4

          Chicken Cocktail Is : 3                                                                                                                                                                                                                                                               

ไม่มีความคิดเห็น:

แสดงความคิดเห็น