วันจันทร์ที่ 7 กันยายน พ.ศ. 2558

Practice

โจทย์
ณ ห้องเรียนแห่งหนึ่ง ค่อนข้างบ่อยครั้งที่พบว่ามีเสียงรบกวนมากมายในระหว่างคาบเรียนและแทนที่นักเรียนจะตั้งใจฟังในสิ่งที่คุณครูสอน นักเรียนกลับเอาแต่สนทนากันในเรื่องวิกฤตการณ์ทางเศรษฐกิจ หรือการเข้าร่วมสหภาพยุโรปของ 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 ตัวอักษร ประกอบด้วยตัวอักษรพิมพ์เล็กเท่านั้น
ข้อมูลส่งออก
มี หลาย บรรทัด แต่ละบรรทัดแสดงสตริงมุกที่ อ้วน เล่น เรียงตามลำดับตัวอักษร โดยจะไม่แสดงมุกเดิมซ้ำ
ตัวอย่างข้อมูลนำเข้า                                                           ตัวอย่างข้อมูลส่งออก
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) โดยแต่ละค่าจะคั่นด้วยช่องว่างหนึ่งช่อง 
ข้อมูลส่งออก
มีบรรทัดเดียว ประกอบด้วยจำนวนเต็มหนึ่งค่า ซึ่งเป็นจำนวนของเค้กเต็มปอนด์ที่น้อยที่สุดที่เจ้าของร้านต้องเตรียมให้เพียงพอตามรายการที่ลูกค้าสั่ง 
ที่มา: การแข่งขันคอมพิวเตอร์โอลิมปิก สอวน. ครั้งที่ 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 ตัวอักษร 
ข้อมูลส่งออก
ให้พิมพ์คำตอบตามเงื่อนไขต่อไป
นี้
  • ถ้าสายอักขระประกอบด้วยตัวพิมพ์ใหญ่ทั้งหมด ให้พิมพ์ว่า "All Capital Letter" โดยไม่ต้องมีเครื่องหมาย ""
  • ถ้าสายอักขระประกอบด้วยตัวพิมพ์เล็กทั้งหมด ให้พิมพ์ว่า "All Small Letter" โดยไม่ต้องมีเครื่องหมาย ""
  • ถ้าสายอักขระประกอบด้วยตัวอักษรพิมพ์เล็กและพิมพ์ใหญ่ผสมกันไป ให้พิมพ์ว่า "Mix" โดยไม่ต้องมีเครื่องหมาย ""
ที่มา: Programming.in.th (Northern_series)
ตัวอย่างข้อมูลนำเข้า                                                           ตัวอย่างข้อมูลส่งออก
ABCDEFG                   All Capital Letter
abcdefgAll Small Letter
AbCdEfGMix
โค้ดที่ใช้งาน
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 :')#เรียกใช้งานฟังก์ชั่น

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


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

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