Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การหาตัวเลขที่มีผลรวมหลักเป็นเลขคู่ โดยใช้ C++

จำนวนเต็มที่สามารถหารด้วย 2 ลงตัวคือเลขคู่ ดังนั้นในบทความนี้ เราได้รับตัวเลข n และเราต้องหาตัวเลขตัวที่ n ที่มีผลรวมของหลักเป็นเลขคู่ ตัวเลข 5 ตัวแรกที่มีผลรวมหลักเป็นเลขคู่คือ 2, 4, 6, 8, และ 11 ตัวอย่างเช่น:

Input : n = 5
Output : 11
คำอธิบาย : ตัวเลข 5 ตัวแรกที่มีผลรวมหลักเป็นเลขคู่คือ 2, 4, 6, 8, 11 คือ ตัวที่ 5 คือ 11

Input : 12
Output : 24

วิธีการแก้ปัญหา

ตอนนี้คุณจะได้รู้จักสองวิธีที่แตกต่างกันในการหาคำตอบของปัญหาที่กำหนด

วิธี Naive (วิธีตรงไปตรงมา)

วิธีง่ายๆ ในการหาตัวเลขตัวที่ n คือ เริ่มต้นเดินทางผ่านตัวเลขตั้งแต่ 1 และตรวจสอบแต่ละตัวเลขว่าผลรวมหลักของมันเป็นเลขคู่หรือไม่ ถ้าใช่ เพิ่มตัวนับขึ้น 1 จนกว่าค่าของตัวนับจะเท่ากับ n และสุดท้ายตัวเลขตัวที่ n นั้นจะเป็นคำตอบ

วิธีที่มีประสิทธิภาพ (Efficient Approach)

วิธีที่มีประสิทธิภาพในการหาตัวเลขตัวที่ n คือ การตรวจสอบตัวเลขเริ่มต้นที่มีผลรวมหลักเป็นเลขคู่ และค้นหา pattern เพื่อหาคำตอบ ตัวเลข 20 ตัวแรกที่มีผลรวมหลักเป็นเลขคู่คือ 2, 4, 6, 8, 11, 13, 15, 17, 19, 20, 22, 24, 26, 28, 31, 33, 35, 37, 39 และ 40 ดูที่ตัวเลข 20 ตัวแรกเหล่านี้ เราพบว่าถ้าหลักสุดท้ายของ n อยู่ระหว่าง 0 ถึง 4 ตัวเลขตัวที่ n จะเป็น 2×n และถ้าหลักสุดท้ายของ n อยู่ระหว่าง 5 ถึง 9 ตัวเลขตัวที่ n จะเป็น (2×n + 1)

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long int n = 13;
    long long int result;
    // หาหลักสุดท้ายของ n
    int last_digit = n % 10;
    // ตรวจสอบว่าหลักสุดท้ายอยู่ระหว่าง 0 และ 4
    if (last_digit >= 0 && last_digit <= 4)
        result = 2 * n;
    // ตรวจสอบว่าหลักสุดท้ายอยู่ระหว่าง 5 และ 9
    else
        result = (2 * n) + 1;
    cout << "nth Number with even sum of digits: " << result;
    return 0;
}

ผลลัพธ์

nth Number with even sum of digits: 26

คำอธิบายโค้ด

  • หาหลักสุดท้ายและตรวจสอบว่ามันอยู่ระหว่าง 0 และ 4 ถ้าใช่ เก็บ 2×n เป็นคำตอบในตัวแปร result
  • มิฉะนั้น ตรวจสอบว่าหลักสุดท้ายอยู่ระหว่าง 5 และ 9 ถ้าใช่ เก็บ 2×n + 1 เป็นคำตอบในตัวแปร result
  • พิมพ์ตัวเลขตัวที่ n ที่มีผลรวมหลักเป็นเลขคู่ ที่เก็บอยู่ในตัวแปร result

สรุป

ในบทความนี้ เราอภิปรายการหาตัวเลขตัวที่ n ที่มีผลรวมหลักเป็นเลขคู่ ซึ่งเราสามารถแก้ปัญหานี้ได้สองวิธีที่เราเข้าใจในบทความนี้ เรายังเขียนโค้ด C++ เพื่อทำโปรแกรมแก้ปัญหาเดียวกัน เราสามารถเขียนโค้ดนี้ในภาษาอื่นๆ เช่น C, Java, Python ฯลฯ ได้ หวังว่าบทความนี้จะเป็นประโยชน์