ในปัญหานี้ เราจะพยายามหาเลข K ที่เล็กที่สุด ซึ่งจะหารด้วย X ลงตัว เมื่อต้องการทำภารกิจนี้ เราจะใช้เลข K ที่น้อยที่สุดโดยใช้สูตรนี้ (10^(k-1)) แล้วตรวจดูว่าตัวเลขหารด้วย X ลงตัวหรือไม่ ถ้าไม่ เราจะได้จำนวนที่แน่นอนโดยใช้สูตรนี้
(min+ 𝑋)−((min+ 𝑋) 𝑚𝑜𝑑 𝑋)
ตัวอย่างหนึ่งเหมือนกับตัวเลข 5 หลัก ที่หารด้วย 29 ลงตัว ดังนั้นตัวเลข 5 หลักที่น้อยที่สุดคือ 10000 ซึ่งหารด้วย 29 ไม่ได้ ตอนนี้เราใช้สูตรนี้แล้วจะได้ −
(10000+ 29)−((10000+29) 𝑚𝑜𝑑 29)=10029−24=10005
จำนวน 1,0005 หารด้วย 29 ลงตัว
อัลกอริทึม
นาทีKDigit(k, x)
begin min = 10 ^ (k-1) if min is divisible by x, return min otherwise return (min + x) – ((min + x) mod x) end
ตัวอย่าง
#include<iostream> #include<cmath> using namespace std; long min_k_digit(int k, int x) { //get the minimum number of k digits int min = pow(10, k-1); if(min % x == 0) { return min; } return (min + x) - ((min + x) % x); } main() { int k, x; cout << "Enter Digit Count(K) and Divisor(N): "; cin >> k >> x; cout << "Result is: " << min_k_digit(k, x); }
ผลลัพธ์
Enter Digit Count(K) and Divisor(N): 5 29 Result is: 10005
ผลลัพธ์
Enter Digit Count(K) and Divisor(N): 6 87 Result is: 100050