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

นับจำนวนที่ความต่างกับตัวเลขย้อนกลับเป็นพหุคูณของ k ใน C++

ได้รับช่วง [L, R] และจำนวน k ต้องการนับจำนวนในช่วงนี้ที่ |เลข - ย้อนกลับ(เลข)| หาร k ลงตัว

ตัวอย่าง

อินพุต: L = 21, R = 25, K = 6

เอาต์พุต: 2

คำอธิบาย:

21 ↔ 12, |21-12|=9, 9%6≠0
22 ↔ 22, |22-22|=0, 0%6=0 ✓
23 ↔ 32, |32-23|=9, 9%6≠0
24 ↔ 42, |42-24|=18, 18%6=0 ✓
25 ↔ 52, |52-25|=27, 27%6≠0
ตัวที่ผ่าน: 22, 24

อินพุต: L = 11, R = 15, K = 5

เอาต์พุต: 1 (11 ↔ 11, |11-11|=0, 0%5=0)

แนวทาง

  • วนลูป i = L ถึง R
  • หาตัวเลขย้อนกลับ: while(num>0) { rem=num%10; rev=rev*10+rem; num/=10; }
  • ถ้า |i - rev| % k == 0 เพิ่มตัวนับ

ตัวอย่างโค้ด C++

#include <iostream>
using namespace std;

int countNumbers(int l, int r, int k) {
    int count = 0;
    for (int i = l; i <= r; i++) {
        int num = i, rev = 0, rem = 0;
        while (num > 0) {
            rem = num % 10;
            rev = rev * 10 + rem;
            num /= 10;
        }
        if (abs(i - rev) % k == 0) count++;
    }
    return count;
}

int main() {
    int L = 18, R = 24, K = 6;
    cout << "Numbers whose difference with reverse is product of k: " << countNumbers(L, R, K);
    return 0;
}

ผลลัพธ์

Numbers whose difference with reverse is product of k: 4