Wattanapong suttapak SE, ICT University of Phayao.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
Advertisements

ครั้งที่ 9 Function(ต่อ).
Introduction to C Introduction to C.
อสมการ 1.1 อสมการเชิงเส้นตัวแปรเดียว
ลิมิตและความต่อเนื่อง
Number Theory (part 1) ง30301 คณิตศาสตร์ดิสครีต.
Computer Programming 1 1.หากต้องการพิมพ์ให้ได้ผลลัพธ์ดังนี้ต้องเขียน code อย่างไร (ใช้for)
ครั้งที่ 8 Function.
การแสดงผล และการรับข้อมูล การแสดงผล และการรับข้อมูล.
การรับค่าและแสดงผล.
ชื่อสมบัติของการเท่ากัน
กิจกรรม คุณติดเกมมากแค่ไหน
หลักการโปรแกรม 1 Lecture 3: ตัวแปร, นิพจน์คณิตศาสตร์, การคำนวณทางคณิตศาสตร์,การดำเนินการกับสายอักขระ.
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
การใช้จ่ายเงินในชีวิตประจำวัน (จำนวนเต็มบวก) ชั้นมัธยมศึกษาปีที่ 1 นางพรเรียง ก๋งแก้ว สาระการเรียนรู้คณิตศาสตร์ โรงเรียนสัตหีบวิทยาคม.
LAB # 3 Computer Programming 1
การเรียงสับเปลี่ยนและทฤษฎีการจัดหมู่
จำนวนนับ และการบวก การลบ การคูณ การหารจำนวนนับ
นางสาวสุพรรษา ธรรมสโรช
การประยุกต์สมการเชิงเส้นตัวแปรเดียว
ผังงานโปรแกรม (Program Flowchart)
การแสดงผล และการรับข้อมูล
หน่วยที่ 2 ภาษาโปรแกรม และการออกแบบโปรแกรม
โจทย์ Array 12 มี.ค จงเขียนโปรแกรมเพื่ออ่านข้อมูลเข้าเป็นจำนวนเต็ม 10 จำนวน แล้วหาผลรวมของเลขเหล่านั้น.
Arrays.
ไกรฤกษ์ เชยชื่น, M.Eng. Electrical
เรื่อง การบวก การลบ การคูณ และการหาร นายประยุทธ เขื่อนแก้ว
ฟังก์ชันของ PHP ฟังก์ชันคือ โปรแกรมย่อยที่สามารถประมวลผล และ คืนผลลัพธ์จาการประมวลผลนั้นสู่โปรแกรมหลักได้ ซึ่งจำเป็นในการเขียนโปรแกรมเพื่อช่วยให้การทำงานมีประสิทธิภาพที่สูงขึ้น.
การควบคุมทิศทางการทำงานของโปรแกรม
บทที่ 4 การโปรแกรมเชิงเส้น (Linear Programming)
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงานลักษณะของฟังก์ชั่นมีความรอบรัดสั้นกว่าแบบวนลูป.
อาร์เรย์ (Array).
Chapter 5 คำสั่งควบคุมการทำซ้ำ
Chapter 4 คำสั่งควบคุมทิศทาง
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ความสัมพันธ์เวียนบังเกิด
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ค33211 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 5
การหาตัวหารร่วมมาก โดยใช้รูปแบบบัญญัติ
ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ภาควิชาวิศวกรรมไฟฟ้า คณะวิศวกรรมศาสตร์ มหาวิทยาลัยสยาม
บทที่ 9 การทำงานกับเลข จำนวน. เลขจำนวนเต็ม $a = 1234;// รูปแบบ เลขฐานสิบ $b = -123;// รูปแบบเลขฐานสิบ $c = 0123;// รูปแบบเลขฐาน แปด $d = 0x1A;// รูปแบบ.
Week 2 Variables.
Week 12 Engineering Problem 2
Week 12 Engineering Problem 2
Computer Programming for Engineers
Week 7 การเขียนโปรแกรมเบื้องต้น
การเขียนโปรแกรม ตอนที่ 1 (ต่อ)
ค21201 คณิตศาสตร์เพิ่มเติม 1
F M B N สมบัติของจำนวนนับ ตัวคูณร่วมน้อย (ค.ร.น.).
คำสั่งรับค่าและฟังก์ชันทางคณิตศาสตร์
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 4 analysis of algorithm efficiency.
หลักสูตรสู่ความสำเร็จใน 90 วัน
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
Midterm outline Object-oriented programming Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
ระบบเลขฐาน.
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
โครงสร้างข้อมูลแบบลิงก์ลิสต์
หลักการเขียนโปรแกรม ( )
การเขียน แบบวนซ้ำ , วนลูป
การกระทำทางคณิตศาสตร์
โครงสร้างข้อมูลแบบ สแตก (stack)
chapter 2 - Construction and destruction - Overloading method
Wattanapong suttapak SE, ICT University of Phayao.
Nested loop.
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์ สัปดาห์ที่ 5 การเขียนโปรแกรมแบบทางเลือก การเขียนโปรแกรมแบบวนซ้ำ.
ใบสำเนางานนำเสนอ:

wattanapong suttapak SE, ICT University of Phayao

1. string.split(“pattern”); 2. sorting function return index; 3. function prime number 4. function factorial 5. Insertion Sort 6. Radix Sort 7. depth first search 8. breath first searh

โจทย์ (1 วินาที ) ให้คำนวณหาค่า B P mod M ( ให้คำนวณให้ทันเวลาที่กำหนด นั่นคือ 3 วินาที ) อินพุท แต่ละ test case ประกอบด้วยตัวแปร 3 ตัว ( นั่นคือ B P M) โดยแต่ละตัวถูกอ่าน เข้ามาทีละบรรทัด โดยที่ B เป็นจำนวนเต็มช่วง 1 ถึง P เป็นจำนวนเต็มช่วง 0 ถึง และ M เป็นจำนวนเต็มจาก 1 ถึง เมื่อข้อมูลครบ 1 test case จะถูกคั่นด้วยบรรทัดว่าง เอาท์พุท แสดงผลลัพธ์ในแต่ละ test case โดย 1 บรรทัดแสดง 1 test case

Sample InputSample Output

B P = B 1 * B 2 * … * B P B P % M = (B 1 * B 2 * … * B P ) % M = ( B 1 % M ) * ( B 2 % M ) * … * ( B P % M )%M - ถ้าคิดโดยการวนรอบจาก B 1 ถึง B P จะสามารถ หาค่าได้แต่ใช้เวลาในการคำนวณขึ้นกับค่า p โดย ยิ่งค่า p ยิ่งมากทำให้เวลาการคำนวณยิ่งมากตาม ไปด้วย - จากโจทย์ต้องการให้คำนวณให้หาค่าจาก test case ทั้งหมดโดยใช้เวลาแค่ 1 นาที ซึ่งค่า p มี ค่าสูงสุดคือ 2 พันล้าน (Max int) ซึ่งจะทำให้ต้อง วนลูป 2 พันล้านครั้ง

B 10 B5B5 B5B5 B2B2 B2B2 B BB ตัวอย่างการหาค่า B 10 % M กำหนดให้ x 1 = B % M x 2 = ( (x 1 * x 1 )% M )* x1)%M x 3 = (x 2 * x 2 )% M x 4 = (x 3 * x 3 )% M x1x1 x2x2 x3x3 x4x4

ดังนั้น x 1 = B % M x 2 = ( (x 1 * x 1 )% M )* x1)%M = B 2 % M x 3 = (x 2 * x 2 )% M = B 5 % M x 4 = (x 3 * x 3 )% M = B 10 % M วน 5 รอบ P = 20 วน 6 รอบ P = 40 วน 7 รอบ P = 80 วน 8 รอบ P = 160 วน x รอบ เมื่อ x = 1+log 2 P นั่นคือ วน 32 รอบ จะสามารถหาค่า P = 4 พันล้านได้

โจทย์ (3 วินาที ) ยูอิไปเที่ยวงานนิทรรศการวิทยาศาสตร์ที่โตเกียว ในงานมีหุ่นยนต์ชื่อ มิโกะ -12 ซึ่งถูกพัฒนาให้มี ระบบ AI( ปัญญาประดิษฐ์ ) ในการช่วยคิด เมื่อยุอิเห็นจึงคิดจะแกล้งหุ่นยนต์ เธอถามมิโกะว่า เธอรู้จัก คณิตศาสตร์ป่าว มิโกะตอบทันทีว่า “ แน่นอนฉันรักคณิตศาสตร์ ” แล้วยูอิจึงเริ่มปฎิบัติการลองภูมิมิโกะทันที “ ถ้าฉันให้ตัวเลขกับเธอ เธอจะหา แฟคทอเรียล (factorial) ของมันได้ใช่ไม๊ แต่จริงๆ แล้วฉันไม่ได้อยากรู้แฟคทอเรียลหรอก ฉันอยากรู้ว่า จำนวน หลักของผลลัพธ์ที่ไม่ใช่ศูนย์ที่ได้จากแฟคทอเรียลเท่ากับเท่าไหร่หน่ะ ” สมมตินะ ถ้าฉันให้ตัวเลข 5 กับเธอ แฟคทอเรียลของมันคือ 120 ใช่ป่ะ เธอต้องหาจำนวนหลักที่ ไม่ใช่ศูนย์ของ 120 ซึ่งก็คือ 1 และ 2 ดังนั้น ให้เธอตอบ 2 มิโกะตอบว่า “ ใช่ ฉันทำได้ ” จากนั้น ยูอิเริ่มถามมิโกะว่า 100 มิโกะเริ่มคิดประมาณ 2 3 นาที แล้วก็ร้องไห้เสียงดัง พร้อมกับพูดว่า "Time Limit Exceeds" ยูอิหัวเราะและก็บอกกับมิโกะว่า ผลรวมคือ 648 มิโกะงง พร้อมกับถามว่า เธอรู้ได้ไง ยูอิบอกว่า ฉันมาจากการแข่งขัน ACM World Finalist และฉันก็สามารถแก้ปัญหาข้อ Big Number problems ได้แล้วยูอิก็หิ้วโน๊ตบุ๊คเดินจากไป ตอนนี้ งานของคุณคือช่วยเขียนโปรแกรมเพื่อช่วยมิโกะให้คิดคำตอบนี้ให้ได้ อินพุท อินพุทแต่ละบรรทัดเป็นตัวเลขที่ต้องหา factorial (integer n, n<=1000). เอาท์พุท แต่ละบรรทัดแสดงจำนวนตัวเลขที่ไม่ใช่ศูนย์จากค่า factorial ของอินพุท

Sample InputSample Output Sample InputSample Output

ความยากของข้อนี้คือ การเก็บค่าของ factorial(n) เมื่อ n มีค่าตั้งแต่ 1 ถึง 1000 โดย เมื่อ n ตั้งแต่ 100 เป็นต้นไป การประกาศ data type long จะไม่สามารถเก็บได้ วิธีการคือ ใช้ data type int ก็พอ แต่ให้เก็บเป็น บล็อก array โดยให้ array แต่ละหลักมีค่าไม่เกิน 1 ล้าน ถ้า เกินให้เก็บไว้ในบล็อก array ใหม่

!9! ! 11! *3 11* ! 0

Sample InputSample Output 4 * * ** *... 0 Field #1: * * Field #2: ** *100

public static int getMine(int s1,int s2,int h,int w,String[][] m){ int num = 0,mini = 0,minj = 0,maxi = h,maxj = w; if (s1==0) mini = 0; else mini = s1-1; if (s1==h-1) maxi = h-1; else maxi = s1+1; if (s2==0) minj = 0; else minj = s2-1; if (s2==w-1) maxj = w-1; else maxj = s2+1; for (int i = mini; i <= maxi; i++) { for (int j = minj; j <= maxj; j++) { if ( ( i!= s1 || j!= s2 ) && m[i][j].equals("*") ){ num++; } return num; } public static void main(String[] args) { Scanner s = new Scanner(System.in); int h = s.nextInt(); int w = s.nextInt(); while(w!= 0 || h!= 0){ String[][] m = new String[h][w]; for (int i = 0; i < h; i++) { String[] tmp = s.next().split(""); for (int j = 0; j < tmp.length-1; j++) { m[i][j] = tmp[j+1]; } for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (!m[i][j].equals("*")){ System.out.print(getMine(i,j,h,w,m)); }else System.out.print("*"); } System.out.println(); } h = s.nextInt(); w = s.nextInt(); }