พูดว่าฉันมีการแสดงออก:
9 * 8 + 1 - 4
การแสดงออกนี้สามารถตีความได้ในหกวิธีที่แตกต่างกันขึ้นอยู่กับลำดับความสำคัญของโอเปอเรเตอร์:
(((9 * 8) + 1) - 4) = 69 (* + -)
((9 * 8) + (1 - 4)) = 69 (* - +)
((9 * (8 + 1)) - 4) = 77 (+ * -)
(9 * ((8 + 1) - 4)) = 45 (+ - *)
((9 * 8) + (1 - 4)) = 69 (- * +)
(9 * (8 + (1 - 4))) = 45 (- + *)
สมมติว่าฉันเป็นนักพัฒนาซอฟต์แวร์และฉันไม่รู้สึกว่าจำตารางลำดับความสำคัญเป็นต้นดังนั้นฉันจะเดา
ในกรณีนี้ข้อผิดพลาดที่ใหญ่ที่สุดคือ 45-77 ซึ่งแตกต่างจาก 32 ซึ่งหมายความว่าการเดาของฉันจะถูกปิดโดยสูงสุด 32
ความท้าทาย
ได้รับการแสดงออกซึ่งประกอบด้วยตัวเลขและ+
, -
, *
, /
(แบ่งจำนวนเต็ม) และ%
เอาท์พุทที่แตกต่างกันแน่นอนของค่าที่เป็นไปได้ที่ใหญ่ที่สุดและมีขนาดเล็กที่สุดในการแสดงออกที่อยู่บนพื้นฐานของความสำคัญของผู้ประกอบการ
ข้อมูลจำเพาะ
- การแสดงออกของการป้อนข้อมูลจะไม่ประกอบด้วยวงเล็บและผู้ประกอบการทุกคนมีความสัมพันธ์ด้านซ้าย
- การแสดงออกของการป้อนข้อมูลจะมีจำนวนเต็มไม่ใช่เชิงลบเท่านั้น อย่างไรก็ตามนิพจน์ย่อยอาจประเมินผลเป็นลบ (เช่น
1 - 4
) - คุณสามารถแสดงออกในรูปแบบที่เหมาะสม ตัวอย่างเช่น:
"9 * 8 + 1 - 4"
"9*8+1-4"
[9, "*", 8, "+", 1, "-", 4]
[9, 8, 1, 4], ["*", "+", "-"]
- อินพุตจะมีอย่างน้อย 1 และอย่างน้อย 10 ตัวดำเนินการ
- ควรละเว้นนิพจน์ใด ๆ ที่มีการหารหรือโมดูโลโดย 0
- คุณสามารถสันนิษฐานได้ว่าโมดูโล่จะไม่ได้รับตัวถูกดำเนินการเชิงลบ
กรณีทดสอบ
9 * 8 + 1 - 4 32
1 + 3 * 4 3
1 + 1 0
8 - 6 + 1 * 0 8
60 / 8 % 8 * 6 % 4 * 5 63
%
ผู้ประกอบการทำงานบนตัวเลขที่ติดลบ? วิธีเช่น C หรือ Python หรืออย่างอื่น?
%
เหมือนมีสองสิ่งที่แตกต่างในตัวอย่างที่สองของคุณ