พิจารณาว่าเรามีหลัก d และขีดจำกัดบน n เราต้องหาตัวเลขทั้งหมดที่มี d อยู่ในช่วง 0 ถึง n ดังนั้นหาก n =20 และหลักเป็น 3 ตัวเลขจะเป็น [3, 13]
ในการแก้ปัญหานี้ เราจะนำทุกตัวเลขมาเป็นสตริง จากนั้นหากมีตัวเลขอยู่ในสตริง ตัวเลขนั้นจะถูกพิมพ์ออกมา มิฉะนั้นจะละเว้น
ตัวอย่าง
#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