พิจารณาว่าเรามีหลัก d และขอบเขตบน n เราต้องหาตัวเลขทั้งหมดที่มี d อยู่ในช่วง 0 ถึง n ถ้า n = 20 และหลักคือ 3 ตัวเลขจะเป็น [3, 13]
เพื่อแก้ปัญหานี้ เราจะแปลงทุกตัวเลขเป็นสตริง แล้วถ้าหลัก d อยู่ในสตริง ให้พิมพ์ตัวเลขนั้น มิฉะนั้นข้ามไป
ตัวอย่าง
#include <iostream>
using namespace std;
int getAllNumWithDigit(int n, int d) {
string str = "";
str += to_string(d);
char ch = str[0];
string p = "";
p += ch;
for (int i = 0; i <= n; i++) {
str = "";
str = str + to_string(i);
int index = str.find(p);
if (i == d || index != -1)
cout << (i) << " ";
}
}
int main() {
int n = 100;
int d = 3;
getAllNumWithDigit(n, d);
}
ผลลัพธ์
3 13 23 30 31 32 33 34 35 36 37 38 39 43 53 63 73 83 93