การบวกและลบตามเงื่อนไข Modulo 13
โจทย์
กำหนดค่าจำนวนเต็ม a ให้คืนค่าผลรวมระหว่าง a และจำนวนเต็มห้าค่าถัดไปที่มากกว่า a อย่างไรก็ตาม หากค่าจำนวนเต็มใดในห้าค่าถัดไปนั้นหารด้วย 13 ลงตัว ให้ลบค่านั้นแทน ยกตัวอย่างเช่น หาก a = 10 ผลลัพธ์จะเป็น 10+11+12 -13 +14+15 ซึ่งเท่ากับ 49
| Input | Output |
|---|---|
| 10 | 49 |
| -23 | -123 |
| 26 | 171 |
โค้ด
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
for (int i = 0; i < 5; i++) {
int nextNum = a + i + 1;
a += (nextNum % 13 == 0) ? -nextNum : nextNum;
}
System.out.println(a);
}
}คำอธิบาย
ขั้นตอนที่ 1: การเริ่มต้นโปรแกรม
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);- โค้ดเริ่มต้นด้วยการ import คลาส
Scannerซึ่งเป็นเครื่องมือที่ช่วยให้เราสามารถรับข้อมูลจากผู้ใช้ได้ - เราสร้างคลาสชื่อ
Mainและกำหนดเมธอดmainซึ่งเป็นจุดเริ่มต้นของโปรแกรม - เราสร้างตัวแปร
scannerเพื่อใช้รับข้อมูลจากผู้ใช้
ขั้นตอนที่ 2: การรับข้อมูลจำนวนเต็ม a
int a = scanner.nextInt();- เราใช้
scanner.nextInt()เพื่อรับจำนวนเต็ม a จากผู้ใช้ และเก็บไว้ในตัวแปรa
ขั้นตอนที่ 3: การวนลูปเพื่อคำนวณผลรวม
for (int i = 0; i < 5; i++) {
int nextNum = a + i + 1;
a += (nextNum % 13 == 0) ? -nextNum : nextNum;
}- เราใช้ลูป
forเพื่อทำงานซ้ำ 5 ครั้ง (สำหรับ 5 จำนวนถัดไป) - ในแต่ละรอบของลูป:
- เราคำนวณจำนวนถัดไป (
nextNum) โดยใช้สูตรa + i + 1 - เราใช้เงื่อนไขแบบย่อ (ternary operator) เพื่อตรวจสอบว่า
nextNumหารด้วย 13 ลงตัวหรือไม่
- ถ้าหารด้วย 13 ลงตัว (
nextNum % 13 == 0) เราจะลบnextNumจากa - ถ้าไม่ใช่ เราจะบวก
nextNumเข้ากับa
ขั้นตอนที่ 4: การแสดงผลลัพธ์
System.out.println(a);- สุดท้าย เราแสดงค่า
aซึ่งเป็นผลลัพธ์สุดท้ายของการคำนวณ
ตัวอย่างการทำงาน
สมมติว่าผู้ใช้ป้อน a = 10:
- รอบที่ 1: nextNum = 11, a = 10 + 11 = 21
- รอบที่ 2: nextNum = 12, a = 21 + 12 = 33
- รอบที่ 3: nextNum = 13, a = 33 - 13 = 20 (เพราะ 13 หารด้วย 13 ลงตัว)
- รอบที่ 4: nextNum = 14, a = 20 + 14 = 34
- รอบที่ 5: nextNum = 15, a = 34 + 15 = 49
หลักการทำงาน
ปรับปรุงล่าสุด