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

โปรแกรม C ++ สำหรับตัวเลข K ที่เล็กที่สุดหารด้วย X?


ในปัญหานี้ เราจะพยายามหาเลข 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