ได้รับช่วง [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