Statement
โจทย์สามารถสรุปใจความได้ว่า มีจำนวนเต็ม ตัว ในที่นี้จะเรียกว่า ให้แสดงจำนวนเต็ม ตัวใน ตัวนี้ที่ผลรวมเป็น ตามลำดับข้อมูลนำเข้า
Solution
ถ้ามีจำนวนเต็ม ตัวที่มีผลรวมเป็น (โจทย์รับประกันว่ามีเสมอ) แสดงว่าจะมีผลรวมของเลข ตัวที่ไม่เข้าพวก
กล่าวคือเราสามารถหาคำตอบของโจทย์ได้จากการหาจำนวนเต็ม และ ที่ และ ที่ทำให้
จากเงื่อนไขข้างต้นสามารถเขียนโปรแกรมได้โดยการวนลูปสองชั้นเพื่อหาเลขตำแหน่งที่ และ ที่สอดคล้องกับเงื่อนไข
Code
#include <stdio.h> int main() { int a[10], sum = 0; for (int i = 1; i <= 9; i++) { scanf("%d", &a[i]); sum += a[i]; } for (int i = 1; i <= 9; i++) { for (int j = i + 1; j <= 9; j++) { if (sum - 100 == a[i] + a[j]) { // ถ้าเข้าเงื่อนไขนี้มาได้แสดงว่าเจอตำแหน่งที่ไม่ต้องปริ้นแล้วคือค่าของ j กับ k for (int k = 1; k <= 9; ++k) { if (k == i || k == j) { // เช็คว่าตำแหน่งที่ k คือตำแหน่ง i หรือ j ก็ข้ามรอบไป ไม่ต้องปริ้นอะไร continue; } printf("%d\n", a[k]); } // หลังจากปริ้นแล้วก็จบโปรแกรม return 0; } } } return 0; }